Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::ops::Index;
- struct PaddedVec<T: Clone> {
- zero_offset: usize,
- buffer: Vec<T>,
- }
- impl<T: Clone> PaddedVec<T> {
- fn new(size: usize, padding: usize, init: T) -> PaddedVec<T> {
- let v = vec![init; size + 2 * padding];
- PaddedVec {
- zero_offset: padding,
- buffer: v,
- }
- }
- }
- impl<T: Clone> Index<isize> for PaddedVec<T> {
- type Output = T;
- fn index(&self, index: isize) -> &T {
- let i: usize = ((self.zero_offset as isize) + index) as usize;
- &self.buffer[i]
- }
- }
- fn main() {
- let v = PaddedVec::new(100, 10, 1usize);
- }
Add Comment
Please, Sign In to add comment