Struct InsertDelta
pub struct InsertDelta<N>(/* private fields */)
where
N: NodeInfo;Expand description
A struct marking that a Delta contains only insertions. That is, it copies
all of the old document in the same order. It has a Deref impl so all
normal Delta methods can also be used on it.
Implementations§
§impl<N> InsertDelta<N>where
N: NodeInfo,
impl<N> InsertDelta<N>where
N: NodeInfo,
pub fn transform_expand(&self, xform: &Subset, after: bool) -> InsertDelta<N>
pub fn transform_expand(&self, xform: &Subset, after: bool) -> InsertDelta<N>
Do a coordinate transformation on an insert-only delta. The after parameter
controls whether the insertions in self come after those specific in the
coordinate transform.
pub fn transform_shrink(&self, xform: &Subset) -> InsertDelta<N>
pub fn transform_shrink(&self, xform: &Subset) -> InsertDelta<N>
Shrink a delta through a deletion of some of its copied regions with
the same base. For example, if self applies to a union string, and
xform is the deletions from that union, the resulting Delta will
apply to the text.
pub fn inserted_subset(&self) -> Subset
pub fn inserted_subset(&self) -> Subset
Return a Subset containing the inserted ranges.
d.inserted_subset().delete_from_string(d.apply_to_string(s)) == s
Methods from Deref<Target = Delta<N>>§
pub fn as_simple_insert(&self) -> Option<&Node<N>>
pub fn as_simple_insert(&self) -> Option<&Node<N>>
If this delta represents a simple insertion, returns the inserted node.
pub fn is_simple_delete(&self) -> bool
pub fn is_simple_delete(&self) -> bool
Returns true if this delta represents a single deletion without
any insertions.
Note that this is false for the trivial delta, as well as for a deletion
from an empty Rope.
pub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
Returns true if applying the delta will cause no change.
pub fn apply(&self, base: &Node<N>) -> Node<N>
pub fn apply(&self, base: &Node<N>) -> Node<N>
Apply the delta to the given rope. May not work well if the length of the rope is not compatible with the construction of the delta.
pub fn summary(&self) -> (Interval, usize)
pub fn summary(&self) -> (Interval, usize)
Produce a summary of the delta. Everything outside the returned interval is unchanged, and the old contents of the interval are replaced by new contents of the returned length. Equations:
(iv, new_len) = self.summary()
new_s = self.apply(s)
new_s = simple_edit(iv, new_s.subseq(iv.start(), iv.start() + new_len), s.len()).apply(s)
pub fn new_document_len(&self) -> usize
pub fn new_document_len(&self) -> usize
Returns the length of the new document. In other words, the length of the transformed string after this Delta is applied.
d.apply(r).len() == d.new_document_len()
pub fn inserts_len(&self) -> usize
pub fn inserts_len(&self) -> usize
Returns the sum length of the inserts of the delta.
pub fn iter_inserts(&self) -> InsertsIter<'_, N> ⓘ
pub fn iter_inserts(&self) -> InsertsIter<'_, N> ⓘ
Iterates over all the inserts of the delta.
pub fn iter_deletions(&self) -> DeletionsIter<'_, N> ⓘ
pub fn iter_deletions(&self) -> DeletionsIter<'_, N> ⓘ
Iterates over all the deletions of the delta.
Trait Implementations§
§impl<N> Clone for InsertDelta<N>
impl<N> Clone for InsertDelta<N>
§fn clone(&self) -> InsertDelta<N>
fn clone(&self) -> InsertDelta<N>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl<N> Debug for InsertDelta<N>
impl<N> Debug for InsertDelta<N>
§impl<N> Deref for InsertDelta<N>where
N: NodeInfo,
An InsertDelta is a certain kind of Delta, and anything that applies to a
Delta that may include deletes also applies to one that definitely
doesn’t. This impl allows implicit use of those methods.
impl<N> Deref for InsertDelta<N>where
N: NodeInfo,
An InsertDelta is a certain kind of Delta, and anything that applies to a Delta that may include deletes also applies to one that definitely doesn’t. This impl allows implicit use of those methods.
Auto Trait Implementations§
impl<N> Freeze for InsertDelta<N>
impl<N> RefUnwindSafe for InsertDelta<N>
impl<N> Send for InsertDelta<N>
impl<N> Sync for InsertDelta<N>
impl<N> Unpin for InsertDelta<N>
impl<N> UnsafeUnpin for InsertDelta<N>
impl<N> UnwindSafe for InsertDelta<N>
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more