"Rust의 uninitialized와 forget"의 두 판 사이의 차이

(새 문서: <source lang="rust"> enum Gender{ Male, Female } struct Person{ name:String, age:u32, gender:Gender } impl std::fmt::Debug for Person{ fn fmt(&self, w:&mut std...)
(차이 없음)

2018년 11월 14일 (수) 12:43 판

enum Gender{
    Male,
    Female
}
struct Person{
    name:String,
    age:u32,
    gender:Gender
}
impl std::fmt::Debug for Person{
    fn fmt(&self, w:&mut std::fmt::Formatter)->std::fmt::Result{
        
        match self.gender{
            Gender::Male=>write!(w, "He is "),
            Gender::Female=>write!(w, "She is ")
        }?;
        return writeln!(w,"{} and {}-years-old", self.name, self.age);
    }
}
impl Drop for Person{
    fn drop(&mut self){
      //  std::mem::drop(self.name);
        println!("{:?} drop!",self);
    }
}
fn main() {
    let a =Person{name:String::from("Hong gildong"), age:33, gender:Gender::Male};

    let b:Person =unsafe{std::mem::uninitialized()};
    println!("{:?}",a);
    println!("{:?}",b);
    
    std::mem::forget(b);
}