pub struct SeekByAccCond<Spec, L, F>where
L: LazyMapMonoid,{
acc: L::Agg,
f: F,
_marker: PhantomData<fn() -> (Spec, L)>,
}Fields§
§acc: L::Agg§f: F§_marker: PhantomData<fn() -> (Spec, L)>Implementations§
Source§impl<Spec, L, F> SeekByAccCond<Spec, L, F>
impl<Spec, L, F> SeekByAccCond<Spec, L, F>
Sourcepub fn new(f: F) -> Self
pub fn new(f: F) -> Self
Examples found in repository?
crates/competitive/src/data_structure/treap.rs (line 434)
428 pub fn find_by_acc_cond<F>(&mut self, f: F) -> Option<BstNodeId<TreapSpec<M, L>>>
429 where
430 F: FnMut(&L::Agg) -> bool,
431 {
432 let split = Split::new(
433 &mut self.root,
434 SeekByAccCond::<TreapSpec<M, L>, L, F>::new(f),
435 EqualSide::Right,
436 );
437 let node = split.right()?.leftmost();
438 self.node_id_manager.registered_node_id(node)
439 }More examples
crates/competitive/src/data_structure/implicit_splay_tree.rs (line 369)
360 pub fn partition_point_acc<F>(&mut self, left: usize, mut pred: F) -> usize
361 where
362 F: FnMut(&T::Agg) -> bool,
363 {
364 let mut split3 = Split3::seek_by_size(&mut self.root, left..);
365 let front_size = split3
366 .left()
367 .map(|node| node.into_data().size)
368 .unwrap_or_default();
369 let split = split3.split_mid(SeekByAccCond::new(|acc| !pred(acc)), EqualSide::Right);
370 let index = split
371 .left()
372 .map(|node| node.into_data().size)
373 .unwrap_or_default();
374 front_size + index
375 }crates/competitive/src/data_structure/implicit_treap.rs (line 473)
464 pub fn partition_point_acc<F>(&mut self, left: usize, mut pred: F) -> usize
465 where
466 F: FnMut(&T::Agg) -> bool,
467 {
468 let mut split3 = Split3::seek_by_size(&mut self.root, left..);
469 let front_size = split3
470 .left()
471 .map(|node| node.into_data().size)
472 .unwrap_or_default();
473 let split = split3.split_mid(SeekByAccCond::new(|acc| !pred(acc)), EqualSide::Right);
474 let index = split
475 .left()
476 .map(|node| node.into_data().size)
477 .unwrap_or_default();
478 front_size + index
479 }Trait Implementations§
Source§impl<Spec, L, F> BstSeeker for SeekByAccCond<Spec, L, F>where
Spec: BstSpec<Data: BstDataAccess<LazyMap, Value = LazyMapElement<L>>>,
L: LazyMapMonoid,
F: FnMut(&L::Agg) -> bool,
impl<Spec, L, F> BstSeeker for SeekByAccCond<Spec, L, F>where
Spec: BstSpec<Data: BstDataAccess<LazyMap, Value = LazyMapElement<L>>>,
L: LazyMapMonoid,
F: FnMut(&L::Agg) -> bool,
Auto Trait Implementations§
impl<Spec, L, F> Freeze for SeekByAccCond<Spec, L, F>
impl<Spec, L, F> RefUnwindSafe for SeekByAccCond<Spec, L, F>where
<L as LazyMapMonoid>::Agg: RefUnwindSafe,
F: RefUnwindSafe,
PhantomData<fn() -> (Spec, L)>: RefUnwindSafe,
impl<Spec, L, F> Send for SeekByAccCond<Spec, L, F>
impl<Spec, L, F> Sync for SeekByAccCond<Spec, L, F>
impl<Spec, L, F> Unpin for SeekByAccCond<Spec, L, F>
impl<Spec, L, F> UnsafeUnpin for SeekByAccCond<Spec, L, F>where
<L as LazyMapMonoid>::Agg: UnsafeUnpin,
F: UnsafeUnpin,
PhantomData<fn() -> (Spec, L)>: UnsafeUnpin,
impl<Spec, L, F> UnwindSafe for SeekByAccCond<Spec, L, F>where
<L as LazyMapMonoid>::Agg: UnwindSafe,
F: UnwindSafe,
PhantomData<fn() -> (Spec, L)>: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more