Sobes.tech
Junior — Middle

Дар Rust калимаи калидии 'non-Escaping' дар куҷо истифода мешавад ва чаро он зарур аст?

sobes.tech AI

Ҷавоб аз AI

Дар Swift (ва не Rust) калидвошти @noescape (пеш аз Swift 3) ё рафтори стандартӣ барои пӯшишҳо — ин non-escaping closures, яъне пӯшишҳое, ки кафолат медиҳанд, ки пас аз баромадан аз функсия нигоҳ дошта намешаванд ва даъват нашаванд. Дар Rust, калидвошти "non-Escaping" ҳамчун чунин вуҷуд надорад, аммо мафҳумҳои монанд ба соҳибӣ ва қарзгирӣ ҳастанд, ки бехатарии ишораҳоро таъмин мекунанд.

Агар дар бораи Swift гап занем, non-escaping closures барои оптимизатсия ва бехатарӣ заруранд: компилятор медонад, ки пӯшиш аз баромад аз функсия дарозтар зиндагӣ намекунад, бинобар ин, метавонанд аз ишораҳои қавӣ ва циклҳо канорагирӣ кунанд.

Масалан дар Swift:

func perform(action: () -> Void) { // non-escaping closure
    action()
}

Ин ҷо, action наметавонад нигоҳ дошта шавад ва баъдтар даъват шавад, ки идоракунии хотираро содда мекунад.

Дар Rust, идоракунии вақти зиндагӣ ва қарзгирӣ тавассути системаи lifetimes ва соҳибӣ ҳал карда мешавад, ки аз "қочиш" кардани ишораҳо аз доираи онҳо пешгирӣ мекунад.