#![allow(dead_code, deprecated, unused_variables, unused_mut)] #![allow(dead_code)] use std::mem; struct Buffer { buf: Vec, } impl Buffer { fn replace_index(&mut self, i: usize, v: T) -> T { mem::replace(&mut self.buf[i], v) } } fn main() { let mut buffer = Buffer { buf: vec![0, 1] }; assert_eq!(buffer.buf[0], 0); assert_eq!(buffer.replace_index(0, 2), 0); assert_eq!(buffer.buf[0], 2); }