- Давайте прсото для начала увидем код, который поначану будет
- вводить в ступор из-за ошибки
-
-fn main() {
- let s = String::from("Hello world");
- let s1 = s;
- println!("{} {}", s, s1);
-}
-
-
- Ошибка будет заключаться в том, что в Rust реализована система- владельцев, а именно то, что у всех данных есть владельцы(подробнее
- про них можно прочитать тут - )
- Пока что можно рассмотреть ошибку на примере данной картинки
-
- - Здесь показано, что при создании первой переменной у нас выделяяется
- память на heap, а переменная просто на нее указывает, тем самым владеет
- этим участком двнными. Но, когда мы добавляем новую переменную, на один
- и тот же участок памяти указывает 2 переменные (владельца) => что при
- очистке данных памяти на которую указывает нусколько переменных она будет
- очищена несколько раз, что может привести к большим проблемам. Из-за этого
- было принято решение просто затерать первую и далее работать с новосозданной
- -
-fn main() {
- let first = String::from("Hello");
-
-}
-
-
+
+
+
+
+