Struct general_sam::utils::rope::Rope
source · pub struct Rope<Inner: RopeData>(/* private fields */);utils only.Methods from Deref<Target = TreapTree<RopeTreapData<Inner>>>§
pub fn root_data_ref(&self) -> Option<&DataType>
pub fn map<F: FnOnce(&mut TreapNode<DataType>)>(&self, f: F) -> Self
pub fn add_tag(&self, tag: DataType::TagType) -> Self
pub fn merge(&self, other: &Self) -> Self
pub fn split<F: FnMut(&mut TreapNode<DataType>) -> SplitTo>( &self, f: F ) -> (Self, Self)
pub fn query<F: FnMut(&TreapNode<DataType>) -> Ordering>( &self, f: F ) -> Option<Cow<'_, DataType>>
pub fn for_each<F: FnMut(DataType)>(&self, f: &mut F)
pub fn is_empty(&self) -> bool
Methods from Deref<Target = Option<Arc<TreapNode<DataType>>>>§
1.0.0 · sourcepub fn as_ref(&self) -> Option<&T>
pub fn as_ref(&self) -> Option<&T>
Converts from &Option<T> to Option<&T>.
Examples
Calculates the length of an Option<String> as an Option<usize>
without moving the String. The map method takes the self argument by value,
consuming the original, so this technique uses as_ref to first take an Option to a
reference to the value inside the original.
let text: Option<String> = Some("Hello, world!".to_string());
// First, cast `Option<String>` to `Option<&String>` with `as_ref`,
// then consume *that* with `map`, leaving `text` on the stack.
let text_length: Option<usize> = text.as_ref().map(|s| s.len());
println!("still can print text: {text:?}");1.75.0 · sourcepub fn as_slice(&self) -> &[T]
pub fn as_slice(&self) -> &[T]
Returns a slice of the contained value, if any. If this is None, an
empty slice is returned. This can be useful to have a single type of
iterator over an Option or slice.
Note: Should you have an Option<&T> and wish to get a slice of T,
you can unpack it via opt.map_or(&[], std::slice::from_ref).
Examples
assert_eq!(
[Some(1234).as_slice(), None.as_slice()],
[&[1234][..], &[][..]],
);The inverse of this function is (discounting
borrowing) [_]::first:
for i in [Some(1234_u16), None] {
assert_eq!(i.as_ref(), i.as_slice().first());
}1.40.0 · sourcepub fn as_deref(&self) -> Option<&<T as Deref>::Target>where
T: Deref,
pub fn as_deref(&self) -> Option<&<T as Deref>::Target>where T: Deref,
Converts from Option<T> (or &Option<T>) to Option<&T::Target>.
Leaves the original Option in-place, creating a new one with a reference
to the original one, additionally coercing the contents via Deref.
Examples
let x: Option<String> = Some("hey".to_owned());
assert_eq!(x.as_deref(), Some("hey"));
let x: Option<String> = None;
assert_eq!(x.as_deref(), None);Trait Implementations§
Auto Trait Implementations§
impl<Inner> RefUnwindSafe for Rope<Inner>where Inner: RefUnwindSafe,
impl<Inner> Send for Rope<Inner>where Inner: Send + Sync,
impl<Inner> Sync for Rope<Inner>where Inner: Send + Sync,
impl<Inner> Unpin for Rope<Inner>
impl<Inner> UnwindSafe for Rope<Inner>where Inner: RefUnwindSafe,
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
source§impl<InnerRopeData, TreapBasedRope> RopeBase for TreapBasedRopewhere
InnerRopeData: RopeData,
TreapBasedRope: From<TreapTree<RopeTreapData<InnerRopeData>>> + Deref<Target = TreapTree<RopeTreapData<InnerRopeData>>> + Clone,
impl<InnerRopeData, TreapBasedRope> RopeBase for TreapBasedRopewhere InnerRopeData: RopeData, TreapBasedRope: From<TreapTree<RopeTreapData<InnerRopeData>>> + Deref<Target = TreapTree<RopeTreapData<InnerRopeData>>> + Clone,
§type InnerRopeData = InnerRopeData
type InnerRopeData = InnerRopeData
utils only.source§fn new(data: <TreapBasedRope as RopeBase>::InnerRopeData) -> TreapBasedRope
fn new(data: <TreapBasedRope as RopeBase>::InnerRopeData) -> TreapBasedRope
utils only.source§fn for_each<F>(&self, f: F)where
F: FnMut(<TreapBasedRope as RopeBase>::InnerRopeData),
fn for_each<F>(&self, f: F)where F: FnMut(<TreapBasedRope as RopeBase>::InnerRopeData),
utils only.source§fn split(&self, num: usize) -> (TreapBasedRope, TreapBasedRope)
fn split(&self, num: usize) -> (TreapBasedRope, TreapBasedRope)
utils only.source§fn merge(&self, other: &TreapBasedRope) -> TreapBasedRope
fn merge(&self, other: &TreapBasedRope) -> TreapBasedRope
utils only.source§fn root_data_ref(&self) -> Option<&<TreapBasedRope as RopeBase>::InnerRopeData>
fn root_data_ref(&self) -> Option<&<TreapBasedRope as RopeBase>::InnerRopeData>
utils only.source§fn add_tag(
&self,
tag: <<TreapBasedRope as RopeBase>::InnerRopeData as RopeData>::TagType
) -> TreapBasedRope
fn add_tag( &self, tag: <<TreapBasedRope as RopeBase>::InnerRopeData as RopeData>::TagType ) -> TreapBasedRope
utils only.source§fn insert(&self, pos: usize, data: Self::InnerRopeData) -> Self
fn insert(&self, pos: usize, data: Self::InnerRopeData) -> Self
utils only.source§fn remove(&self, pos: usize) -> (Self, Option<Self::InnerRopeData>)
fn remove(&self, pos: usize) -> (Self, Option<Self::InnerRopeData>)
utils only.source§fn push_back(&self, data: Self::InnerRopeData) -> Self
fn push_back(&self, data: Self::InnerRopeData) -> Self
utils only.source§fn push_front(&self, data: Self::InnerRopeData) -> Self
fn push_front(&self, data: Self::InnerRopeData) -> Self
utils only.source§impl<InnerRopeData, TreapBasedRope> TreapBasedRopeBase for TreapBasedRopewhere
InnerRopeData: RopeData,
TreapBasedRope: From<TreapTree<RopeTreapData<InnerRopeData>>> + Deref<Target = TreapTree<RopeTreapData<InnerRopeData>>> + Clone,
impl<InnerRopeData, TreapBasedRope> TreapBasedRopeBase for TreapBasedRopewhere InnerRopeData: RopeData, TreapBasedRope: From<TreapTree<RopeTreapData<InnerRopeData>>> + Deref<Target = TreapTree<RopeTreapData<InnerRopeData>>> + Clone,
source§fn new_from_rng<R: FnMut() -> usize>(data: Self::InnerRopeData, rng: R) -> Self
fn new_from_rng<R: FnMut() -> usize>(data: Self::InnerRopeData, rng: R) -> Self
utils only.source§fn insert_from_rng<R: FnMut() -> usize>(
&self,
pos: usize,
data: Self::InnerRopeData,
rng: R
) -> Self
fn insert_from_rng<R: FnMut() -> usize>( &self, pos: usize, data: Self::InnerRopeData, rng: R ) -> Self
utils only.source§fn push_back_from_rng<R: FnMut() -> usize>(
&self,
data: Self::InnerRopeData,
rng: R
) -> Self
fn push_back_from_rng<R: FnMut() -> usize>( &self, data: Self::InnerRopeData, rng: R ) -> Self
utils only.source§fn push_front_from_rng<R: FnMut() -> usize>(
&self,
data: Self::InnerRopeData,
rng: R
) -> Self
fn push_front_from_rng<R: FnMut() -> usize>( &self, data: Self::InnerRopeData, rng: R ) -> Self
utils only.source§fn query(
&self,
pos: usize
) -> Option<Cow<'_, RopeTreapData<Self::InnerRopeData>>>
fn query( &self, pos: usize ) -> Option<Cow<'_, RopeTreapData<Self::InnerRopeData>>>
utils only.