[][src]Function tao_of_rust::ch13::panic_safety::panic_safety

pub fn panic_safety()

恐慌安全

Basic usage: 示例

impl<T: Clone> Vec<T> {
   fn push_all(&mut self, to_push: &[T]) {
       self.reserve(to_push.len());
       unsafe {
           self.set_len(self.len() + to_push.len());
           for (i, x) in to_push.iter().enumerate() {
               // x.clone() 方法可能发生恐慌
               // 所以整个push_all函数就不是恐慌安全的函数
               // 但是出于Rust的设计,这些未初始化的内存并不会被暴露出来
               self.ptr().offset(i as isize).write(x.clone());
           }
       }
  }
}Run