Я тут недавно узнал, что не только я изучаю ржавчину. Но еще и [personal profile] juan_gandhi (как минимум)

Первый прикол
Раст имеет понятие мутабельности. Мутабельное менять можно, а иммутабельное нельзя. Приводить одно к другому можно через небезопасный код внутри конструкции unsafe{} - но оптимизатор надеется, что вы не будете так делать. Поэтому если вы так сделаете - он наоптимизирует такого, шо ховайся. Поэтому на самом деле, оно хоть и можно технически - но так делать ненадо.

Мутабельноть может иметь две разные категории, которые могут скомбинироваться четырьмя способами. Если ссылка на структуру мутабельна - то ее (ссылку) можно изменить, чтобы она указывала на другую структуру. А структуру менять при этом нельзя.
А если у вас ссылка на мутабельную структуру - то ссылку менять нельзя, а поля структуры менять можно.

struct Foo{ v: u32 }
let mut foo = Foo{ v: 42 }; //наша структура
let foo1 = Foo{ v:43 };

let mut x = &foo; //мутабельная ссылка на иммутабельную структуру
let y = &mut foo; //иммутабельная ссылка на мутабельную структуру. Поля струтуры менять можно, а переназначить на foo1 нельзя
let mut u = &mut foo; //мутабельная ссылка на мутабельную структуру
let k = &foo; //иммутабельная ссылка на иммутабельную структуру

Read more... )

August 2025

S M T W T F S
     12
34 56789
10111213141516
17181920212223
24252627282930
31      

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags