Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
pub use std::io::Write as _;
pub use std::iter;
-pub use itertools::izip;
+pub use itertools::{chain, izip};
pub use itertools::Itertools;
pub fn default<T: Default>() -> T { Default::default() }
pub fn shape_edges(shape: &Shape)
-> impl Iterator<Item=[Point; 2]> + Clone + '_
{
- shape
- .iter()
- .cycle()
- .take(shape.len() + 1)
+ chain!(
+ shape.iter().rev().take(1),
+ shape,
+ )
.tuple_windows()
.map(|(&a,&b)| [a,b])
}