message: Implement negation for vectors
diff: /// ```
  use std::iter::{Zip, Peekable, FilterMap, IntoIterator, Enumerate};
  -use std::ops::{Deref, DerefMut, Mul, Add, Sub, Index, IndexMut};
  +use std::ops::{Deref, DerefMut, Mul, Add, Sub, Index, IndexMut, Neg};
  use std::convert::AsRef;
  use std::cmp;
  use std::slice::{self, Iter, IterMut};
  @@ -923,6 +923,17 @@ where N: Copy + Num,
  }
  }
  +impl<N: Num + Copy + Neg<Output=N>, I: SpIndex> Neg for CsVecI<N, I> {
  + type Output = CsVecI<N, I>;
  +
  + fn neg(mut self) -> CsVecI<N, I> {
  + for value in &mut self.data {
  + *value = -*value;
  + }
  + self
  + }
  +}
  +
  impl<N, IS, DS> Index<usize> for CsVecBase<IS, DS>
  where IS: Deref<Target=[usize]>,
  DS: Deref<Target=[N]> {
  @@ -1204,6 +1215,13 @@ mod test {
  (a, b, expected_sum)
  }
  + #[test]
  + fn negates_vectors() {
  + let vector = CsVec::new(4, vec![0, 3], vec![2., -3.]);
  + let negated = CsVec::new(4, vec![0, 3], vec![-2., 3.]);
  + assert_eq!(-vector, negated);
  + }
  +
  #[test]
  fn can_construct_zero_sized_vectors() {
  CsVec::<f64>::new(0, vec![], vec![]);
  