Передача власництва від s1 до s2. s1 тепер invalid.
fn takes_ownership(s: String) {
println!("{}", s);
// s видаляється тут
}
let s1 = String::from("hello");
takes_ownership(s1); // s1 move в функцію
// println!("{}", s1); // ERROR!
Тимчасово дати доступ без передачі власництва. &T (immutable borrow), &mut T (mutable borrow).
let mut s = String::from("hello");
let r1 = &s; // immutable borrow
let r2 = &s; // OK: кілька immutable
println!("{}", r1); // OK
let r3 = &mut s; // mutable borrow
r3.push_str(" world");
println!("{}", r3); // OK
Синтаксис для визначення scope reference. Позначається 'a, 'b і т.д.
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() { x } else { y }
}
let s1 = String::from("long");
let s2 = "short";
let result = longest(&s1, &s2);
println!("{}", result);
| [object Object] |
| [object Object] |
| [object Object] |
| [object Object] |
Лекція 14: Заимствование і References
Дякую за увагу! 💾