@@ -2,7 +2,6 @@ use crate::internal_bit::ceil_pow2;
2
2
use crate :: internal_type_traits:: { BoundedAbove , BoundedBelow , One , Zero } ;
3
3
use std:: cmp:: { max, min} ;
4
4
use std:: convert:: Infallible ;
5
- use std:: iter:: FromIterator ;
6
5
use std:: marker:: PhantomData ;
7
6
use std:: ops:: { Add , BitAnd , BitOr , BitXor , Mul , Not } ;
8
7
@@ -135,26 +134,6 @@ impl<M: Monoid> From<Vec<M::S>> for Segtree<M> {
135
134
ret
136
135
}
137
136
}
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
- }
158
137
impl < M : Monoid > Segtree < M > {
159
138
pub fn set ( & mut self , mut p : usize , x : M :: S ) {
160
139
assert ! ( p < self . n) ;
0 commit comments