Guest User

Untitled

a guest
Jun 17th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.61 KB | None | 0 0
  1. use std::ops::Index;
  2.  
  3. struct PaddedVec<T: Clone> {
  4. zero_offset: usize,
  5. buffer: Vec<T>,
  6. }
  7.  
  8. impl<T: Clone> PaddedVec<T> {
  9. fn new(size: usize, padding: usize, init: T) -> PaddedVec<T> {
  10. let v = vec![init; size + 2 * padding];
  11. PaddedVec {
  12. zero_offset: padding,
  13. buffer: v,
  14. }
  15. }
  16. }
  17.  
  18. impl<T: Clone> Index<isize> for PaddedVec<T> {
  19. type Output = T;
  20.  
  21. fn index(&self, index: isize) -> &T {
  22. let i: usize = ((self.zero_offset as isize) + index) as usize;
  23. &self.buffer[i]
  24. }
  25. }
  26.  
  27. fn main() {
  28. let v = PaddedVec::new(100, 10, 1usize);
  29.  
  30. }
Add Comment
Please, Sign In to add comment