@@ -2,7 +2,6 @@ use crate::internal_bit::ceil_pow2;
22use crate :: internal_type_traits:: { BoundedAbove , BoundedBelow , One , Zero } ;
33use std:: cmp:: { max, min} ;
44use std:: convert:: Infallible ;
5- use std:: iter:: FromIterator ;
65use std:: marker:: PhantomData ;
76use std:: ops:: { Add , BitAnd , BitOr , BitXor , Mul , Not } ;
87
@@ -135,26 +134,6 @@ impl<M: Monoid> From<Vec<M::S>> for Segtree<M> {
135134 ret
136135 }
137136}
138- impl < M : Monoid > FromIterator < M :: S > for Segtree < M > {
139- fn from_iter < T : IntoIterator < Item = M :: S > > ( iter : T ) -> Self {
140- let iter = iter. into_iter ( ) ;
141- let n = iter. size_hint ( ) . 0 ;
142- let log = ceil_pow2 ( n as u32 ) as usize ;
143- let size = 1 << log;
144- let mut d = Vec :: with_capacity ( size * 2 ) ;
145- d. extend (
146- std:: iter:: repeat_with ( M :: identity)
147- . take ( size)
148- . chain ( iter)
149- . chain ( std:: iter:: repeat_with ( M :: identity) . take ( size - n) ) ,
150- ) ;
151- let mut ret = Segtree { n, size, log, d } ;
152- for i in ( 1 ..size) . rev ( ) {
153- ret. update ( i) ;
154- }
155- ret
156- }
157- }
158137impl < M : Monoid > Segtree < M > {
159138 pub fn set ( & mut self , mut p : usize , x : M :: S ) {
160139 assert ! ( p < self . n) ;
0 commit comments