mem::take() 函数
与 mem::swap() 类似, 但是使用默认值 T::default()
来替换.
该函数接口声明如下:
#![allow(unused)] fn main() { pub fn take<T: Default>(dest: &mut T) -> T; }
看一个示例程序:
use std::mem; #[derive(Debug, Default)] struct Point { x: f32, y: f32, } fn main() { let mut p = Point { x: 3.0, y: 4.0 }; let old_p = mem::take(&mut p); assert_eq!(old_p.x, 3.0); assert_eq!(p.x, 0.0); assert_eq!(p.y, 0.0); }
take() 函数的实现
这个函数非常简单, 它直接调用的 replace() 函数:
#![allow(unused)] fn main() { #[inline] pub fn take<T: Default>(dest: &mut T) -> T { replace(dest, T::default()) } }