Rust의 uninitialized와 forget

다메즈마 (토론 | 기여)님의 2018년 11월 14일 (수) 12:43 판 (새 문서: <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...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
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);
}