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()
λ‘ λ³κ²½ν΄ 보μκΈ° λ°λλλ€.