diff --git a/libs/zarts/src/lib.rs b/libs/zarts/src/lib.rs index 9470ac79..c72e915e 100644 --- a/libs/zarts/src/lib.rs +++ b/libs/zarts/src/lib.rs @@ -45,21 +45,11 @@ use std::{ /// pub struct SortedSeq(Vec); -impl FromIterator for SortedSeq -where - T: Ord, -{ - fn from_iter>(iter: I) -> Self { - Self::new(iter) - } -} - impl SortedSeq where T: Ord, { - pub fn new(values: impl IntoIterator) -> Self { - let mut values = values.into_iter().collect::>(); + pub fn new(mut values: Vec) -> Self { values.sort_unstable(); values.dedup(); Self(values) @@ -78,9 +68,22 @@ where } /// 集合のサイズを返します - pub fn size(&self) -> usize { + pub fn len(&self) -> usize { self.0.len() } + + pub fn is_empty(&self) -> bool { + self.0.is_empty() + } +} + +impl FromIterator for SortedSeq +where + T: Ord, +{ + fn from_iter>(iter: I) -> Self { + Self::new(iter.into_iter().collect()) + } } impl Index for SortedSeq { @@ -116,7 +119,7 @@ mod tests { #[test] fn index_test() { - let seq = SortedSeq::new([4, 4, 2, 5, 2, 9]); + let seq = SortedSeq::new(vec![4, 4, 2, 5, 2, 9]); // 2, 4, 5, 9 assert_eq!(seq.at(0), &2); assert_eq!(seq.at(1), &4);