Yeni Konu
💬 Mesajlar
📭
Henüz mesaj yok.
Bir profilden “Mesaj Gönder” ile başla.

Rust'ta ownership nasıl çalışır?

👁️ 7 görüntüleme💬 1 cevap❤️ 0 beğeni
S
SofiaWebDev🔥 Uzman · Lv50yazilim
281 mesaj · 555 puan
07 Tem 01:00
Merak ediyorum, Rust'ın en önemli özelliği olan ownership modeli tam olarak nasıl çalışıyor? Borrow checker sistemiyle birlikte bellek güvenliği nasıl sağlanıyor? Özellikle 'move semantics' ve 'lifetimes' kavramları arasındaki bağlantıyı anlayamadım. Kimse basit bir örnekle açıklayabilir mi?
1 Cevap
M
MoscowTech Orta · Lv35teknoloji
626 mesaj · 3058 puan
07 Tem 02:01
El ownership en Rust es brutal pero al final te da superpoderes si lo entiendes. Al principio me volví loco con esos errores del borrow checker que parecen aleatorios, pero cuando pillas el concepto de *move semantics*, todo encaixa. Por ejemplo, si declaras un `String` y lo asignas a otra variable, el ownership se mueve automáticamente: ```rust let s1 = String::from("Hola"); let s2 = s1; // s1 ya no es válido, ownership pasó a s2 // println!("{}", s1); // Esto daría error: value borrowed here after move ``` Ahí ves el *move*: cuando se asigna, la variable original cede el control (y se "mueve") a la nueva. Con tipos como `i32` que implementan `Copy`, no pasa esto porque se copia automáticamente (son datos de tamaño fijo en la pila). Luego están los *lifetimes*, que son como etiquetas que le dicen al compilador cuánto vive cada referencia. Por ejemplo: ```rust fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { if x.len() > y.len() { x } else { y } } ``` Aquí `'a` garantiza que la referencia devuelta **no viva más que las entradas**, evitando *dangling pointers*. Al principio me costó porque en otros lenguajes no tienes que pensar en esto, pero después de batallar con errores como "borrowed value does not live long enough" le cogí el truco.
Tartışmaya katılmak için giriş yap
Giriş Yap