[−][src]Function tao_of_rust::ch13::security_abstract::contract
pub fn contract()
使用Unsafe进行安全抽象
安全抽象的时候需要注意什么?
Basic usage: Vec
正因为存在下面那两个判断条件,才保证了该方法的安全性
pub fn insert(&mut self, index: usize, element: T) { let len = self.len(); // 通过该断言保证了数组不能越界 assert!(index <= len); // 通过判断长度是否达到容量极限来决定是否进行扩容 if len == self.buf.cap() { self.reserve(1); } unsafe { { let p = self.as_mut_ptr().offset(index as isize); ptr::copy(p, p.offset(1), len - index); ptr::write(p, element); } self.set_len(len + 1); } }Run