diff -r 59ec51b78737 -r 6e0be42d0a8f rust/integral-geometry/src/lib.rs --- a/rust/integral-geometry/src/lib.rs Sat Nov 03 23:19:28 2018 +0300 +++ b/rust/integral-geometry/src/lib.rs Sun Nov 04 00:25:27 2018 +0300 @@ -383,8 +383,17 @@ Line::new(self.vertices[index], self.vertices[index + 1]) } - pub fn iter<'a>(&'a self) -> impl Iterator + 'a { - (&self.vertices[..self.edges_count()]).iter().cloned() + pub fn split_edge(&mut self, edge_index: usize, vertex: Point) { + self.vertices.insert(edge_index + 1, vertex); + } + + pub fn iter<'a>(&'a self) -> impl Iterator + 'a { + (&self.vertices[..self.edges_count()]).iter() + } + + pub fn iter_mut<'a>(&'a mut self) -> impl Iterator + 'a { + let edges_count = self.edges_count(); + (&mut self.vertices[..edges_count]).iter_mut() } pub fn iter_edges<'a>(&'a self) -> impl Iterator + 'a {