Право собственности и заимствования Rust в 150 словах

Перевод | Автор оригинала: Pascal Hertleif

Недавно я написал на Reddit, что книга по Rust не устареет в ближайшие годы, если она будет сосредоточена на объяснении концепций, а не на текущих API. Практически в то же время я попытался объяснить некоторые концепции Rust другу. Думаю, я придумал довольно краткое описание (возможно, даже объяснение) «владения и заимствования» (концепции, которая отличает Rust от большинства других языков программирования).

Ownership: Вы владеете ресурсом, и когда вы закончите с ним, этот ресурс больше не входит в область действия и освобождается.

References: на ресурс зависят от времени жизни этого ресурса (т.е. они действительны только до тех пор, пока ресурс не будет освобожден).

Move semantics: означает: предоставление принадлежащего функции ресурса означает его передачу. Вы больше не можете получить к нему доступ.

Чтобы не перемещать ресурс, вы вместо этого используете заимствование: вы создаете ссылку на него и перемещаете ее. Когда вы создаете ссылку, вы становитесь ее владельцем. Затем вы перемещаете его (и право собственности на него) в вызываемую функцию. (Ничего нового, только обе концепции одновременно.)

Чтобы управлять ресурсом, не отказываясь от владения, вы можете создать одну изменяемую ссылку. В течение времени существования этой ссылки никакие другие ссылки на тот же ресурс существовать не могут.

Вот и все. И все это проверяется во время компиляции.

Спасибо за чтение.