Drop νΈλ μ
DropνΈλ μμ ꡬννλ©΄, κ·Έ κ°μ΄ μ€μ½ν λ°μΌλ‘ λκ° λ μ€νλ μ½λλ₯Ό μμ±ν μ μμ΅λλ€:
struct Droppable {
name: &'static str,
}
impl Drop for Droppable {
fn drop(&mut self) {
println!("{} μμ μ€", self.name);
}
}
fn main() {
let a = Droppable { name: "a" };
{
let b = Droppable { name: "b" };
{
let c = Droppable { name: "c" };
let d = Droppable { name: "d" };
println!("B λΈλ‘μμ λκ°κΈ°");
}
println!("A λΈλ‘μμ λκ°κΈ°");
}
drop(a);
println!("mainμμ λκ°κΈ°");
}
This slide should take about 8 minutes.
std::mem::dropμstd::ops::Drop::dropκ³Ό κ°μ§ μμ΅λλ€.- κ°μ΄ λ²μλ₯Ό λ²μ΄λλ©΄ μλμΌλ‘ μμ λ©λλ€.
- κ°μ΄ μμ λ λ
std::ops::Dropμ ꡬννλ©΄Drop::dropꡬνμ΄ νΈμΆλ©λλ€. - κ·Έλ¬λ©΄
Dropꡬν μ¬λΆμ κ΄κ³μμ΄ ν΄λΉ νλλ λͺ¨λ μμ λ©λλ€. std::mem::dropμ κ°μ μ¬μ©νλ λΉ ν¨μμ λλ€. μ€μν μ μ κ°μ μμ κΆμ κ°μ§λ―λ‘ λ²μ λμμ μμ λλ€λ μ μ λλ€. λ°λΌμ λ²μλ₯Ό λ²μ΄λ λλ³΄λ€ λΉ¨λ¦¬ κ°μ λͺ μμ μΌλ‘ μμ ν μ μλ νΈλ¦¬ν λ°©λ²μ λλ€.- μ΄λ
dropμμ μ κΈ ν΄μ , νμΌ λ«κΈ° λ±μ μμ μ μ€ννλ κ°μ²΄μ μ μ©ν μ μμ΅λλ€.
- μ΄λ
λ Όμμ :
Drop::dropμ μselfλ₯Ό μΈμλ‘ λ°μ§ μμ΅λκΉ?- μ§§μ λλ΅: λ§μ½ κ·Έλ κ² λλ€λ©΄
std::mem::dropμ΄ λΈλ‘μ λμμ νΈμΆλκ³ , λ€μDrop::dropμ νΈμΆνκ² λμ΄, μ€ν μ€λ²νλ‘κ° λ°μν©λλ€!
- μ§§μ λλ΅: λ§μ½ κ·Έλ κ² λλ€λ©΄
drop(a)λ₯Όa.drop()λ‘ λ³κ²½ν΄ 보μκΈ° λ°λλλ€.