pub struct NonNullContentsLinkDeletionResolver<T, L>where
T: LinkReference,
L: Doublets<T>,{ /* private fields */ }Expand description
Resets a link to (null, null) before deleting it, so the store’s indexes are
updated before the link disappears.
Port of C# NonNullContentsLinkDeletionResolver.
Implementations§
Source§impl<T, L> NonNullContentsLinkDeletionResolver<T, L>where
T: LinkReference,
L: Doublets<T>,
impl<T, L> NonNullContentsLinkDeletionResolver<T, L>where
T: LinkReference,
L: Doublets<T>,
Sourcepub const fn new(links: L) -> NonNullContentsLinkDeletionResolver<T, L>
pub const fn new(links: L) -> NonNullContentsLinkDeletionResolver<T, L>
Wraps links in a NonNullContentsLinkDeletionResolver.
Sourcepub fn into_inner(self) -> L
pub fn into_inner(self) -> L
Unwraps the decorator and returns the wrapped store.
Trait Implementations§
Source§impl<T, L> Debug for NonNullContentsLinkDeletionResolver<T, L>
impl<T, L> Debug for NonNullContentsLinkDeletionResolver<T, L>
Source§impl<T, L> Doublets<T> for NonNullContentsLinkDeletionResolver<T, L>where
T: LinkReference,
L: Doublets<T>,
impl<T, L> Doublets<T> for NonNullContentsLinkDeletionResolver<T, L>where
T: LinkReference,
L: Doublets<T>,
Source§fn get_link(&self, index: T) -> Option<Link<T>>
fn get_link(&self, index: T) -> Option<Link<T>>
Returns the link at
index, or None if it does not exist.Source§fn count_by(&self, query: impl ToQuery<T>) -> Twhere
Self: Sized,
fn count_by(&self, query: impl ToQuery<T>) -> Twhere
Self: Sized,
Counts links matching
query.Source§fn create_by_with<F>(
&mut self,
query: impl ToQuery<T>,
handler: F,
) -> Result<Flow, Error<T>>
fn create_by_with<F>( &mut self, query: impl ToQuery<T>, handler: F, ) -> Result<Flow, Error<T>>
Creates a link matching
query, calling handler on each created link.Source§fn create_by(&mut self, query: impl ToQuery<T>) -> Result<T, Error<T>>where
Self: Sized,
fn create_by(&mut self, query: impl ToQuery<T>) -> Result<T, Error<T>>where
Self: Sized,
Creates a link matching
query and returns its index.Source§fn create_with<F>(&mut self, handler: F) -> Result<Flow, Error<T>>
fn create_with<F>(&mut self, handler: F) -> Result<Flow, Error<T>>
Creates a new link and calls
handler with the before/after states.Source§fn create(&mut self) -> Result<T, Error<T>>where
Self: Sized,
fn create(&mut self) -> Result<T, Error<T>>where
Self: Sized,
Creates a new uninitialized link and returns its index.
Source§fn each_by<F>(&self, query: impl ToQuery<T>, handler: F) -> Flow
fn each_by<F>(&self, query: impl ToQuery<T>, handler: F) -> Flow
Iterates over links matching
query, calling handler for each.Source§fn each<F>(&self, handler: F) -> Flow
fn each<F>(&self, handler: F) -> Flow
Iterates over all links in the store, calling
handler for each.Source§fn update_by_with<H>(
&mut self,
query: impl ToQuery<T>,
change: impl ToQuery<T>,
handler: H,
) -> Result<Flow, Error<T>>
fn update_by_with<H>( &mut self, query: impl ToQuery<T>, change: impl ToQuery<T>, handler: H, ) -> Result<Flow, Error<T>>
Updates links matching
query to change, calling handler with before/after.Source§fn update_by(
&mut self,
query: impl ToQuery<T>,
change: impl ToQuery<T>,
) -> Result<T, Error<T>>where
Self: Sized,
fn update_by(
&mut self,
query: impl ToQuery<T>,
change: impl ToQuery<T>,
) -> Result<T, Error<T>>where
Self: Sized,
Updates links matching
query to change and returns the updated link’s index.Source§fn update_with<F>(
&mut self,
index: T,
source: T,
target: T,
handler: F,
) -> Result<Flow, Error<T>>
fn update_with<F>( &mut self, index: T, source: T, target: T, handler: F, ) -> Result<Flow, Error<T>>
Updates the link at
index to (index, source, target), calling handler.Source§fn update(&mut self, index: T, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
fn update(&mut self, index: T, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
Updates the link at
index to (index, source, target) and returns the index.Source§fn delete_by_with<F>(
&mut self,
query: impl ToQuery<T>,
handler: F,
) -> Result<Flow, Error<T>>
fn delete_by_with<F>( &mut self, query: impl ToQuery<T>, handler: F, ) -> Result<Flow, Error<T>>
Deletes links matching
query, calling handler with before/after states.Source§fn delete_by(&mut self, query: impl ToQuery<T>) -> Result<T, Error<T>>where
Self: Sized,
fn delete_by(&mut self, query: impl ToQuery<T>) -> Result<T, Error<T>>where
Self: Sized,
Deletes links matching
query and returns the deleted link’s index.Source§fn delete_with<F>(&mut self, index: T, handler: F) -> Result<Flow, Error<T>>
fn delete_with<F>(&mut self, index: T, handler: F) -> Result<Flow, Error<T>>
Deletes the link at
index, calling handler with before/after states.Source§fn delete(&mut self, index: T) -> Result<T, Error<T>>where
Self: Sized,
fn delete(&mut self, index: T) -> Result<T, Error<T>>where
Self: Sized,
Deletes the link at
index and returns its former index.Source§fn try_get_link(&self, index: T) -> Result<Link<T>, Error<T>>
fn try_get_link(&self, index: T) -> Result<Link<T>, Error<T>>
Returns the link at
index, or Err(Error::NotExists) if it does not exist.Source§fn delete_all(&mut self) -> Result<(), Error<T>>where
Self: Sized,
fn delete_all(&mut self) -> Result<(), Error<T>>where
Self: Sized,
Deletes all links in the store.
Source§fn delete_query_with<F>(
&mut self,
query: impl ToQuery<T>,
handler: F,
) -> Result<(), Error<T>>
fn delete_query_with<F>( &mut self, query: impl ToQuery<T>, handler: F, ) -> Result<(), Error<T>>
Deletes all links matching
query, calling handler for each deletion.Source§fn delete_usages_with<F>(
&mut self,
index: T,
handler: F,
) -> Result<(), Error<T>>
fn delete_usages_with<F>( &mut self, index: T, handler: F, ) -> Result<(), Error<T>>
Deletes all links that use
index as a source or target, calling handler for each.Source§fn delete_usages(&mut self, index: T) -> Result<(), Error<T>>where
Self: Sized,
fn delete_usages(&mut self, index: T) -> Result<(), Error<T>>where
Self: Sized,
Deletes all links that use
index as a source or target.Source§fn create_point(&mut self) -> Result<T, Error<T>>where
Self: Sized,
fn create_point(&mut self) -> Result<T, Error<T>>where
Self: Sized,
Creates a self-referential point link and returns its index.
Source§fn create_link_with<F>(
&mut self,
source: T,
target: T,
handler: F,
) -> Result<Flow, Error<T>>
fn create_link_with<F>( &mut self, source: T, target: T, handler: F, ) -> Result<Flow, Error<T>>
Creates a link from
source to target, calling handler with before/after states.Source§fn create_link(&mut self, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
fn create_link(&mut self, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
Creates a link from
source to target and returns its index.Source§fn found(&self, query: impl ToQuery<T>) -> boolwhere
Self: Sized,
fn found(&self, query: impl ToQuery<T>) -> boolwhere
Self: Sized,
Returns
true if at least one link matches query.Source§fn find(&self, query: impl ToQuery<T>) -> Option<Link<T>>where
Self: Sized,
fn find(&self, query: impl ToQuery<T>) -> Option<Link<T>>where
Self: Sized,
Returns the first link matching
query, or None.Source§fn search(&self, source: T, target: T) -> Option<T>where
Self: Sized,
fn search(&self, source: T, target: T) -> Option<T>where
Self: Sized,
Returns the index of a link with the given
source and target, or None.Source§fn search_or(&self, source: T, target: T, default: T) -> Twhere
Self: Sized,
fn search_or(&self, source: T, target: T, default: T) -> Twhere
Self: Sized,
👎Deprecated:
use search instead
Source§fn single(&self, query: impl ToQuery<T>) -> Option<Link<T>>where
Self: Sized,
fn single(&self, query: impl ToQuery<T>) -> Option<Link<T>>where
Self: Sized,
Returns the link matching
query only if exactly one link matches; None otherwise.Source§fn get_or_create(&mut self, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
fn get_or_create(&mut self, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
Returns the index of the
(source, target) link, creating it if it does not exist.Source§fn count_usages(&self, index: T) -> Result<T, Error<T>>where
Self: Sized,
fn count_usages(&self, index: T) -> Result<T, Error<T>>where
Self: Sized,
Returns the number of other links that reference
index as a source or target.Source§fn usages(&self, index: T) -> Result<Vec<T>, Error<T>>where
Self: Sized,
fn usages(&self, index: T) -> Result<Vec<T>, Error<T>>where
Self: Sized,
Returns the indices of all links that reference
index as a source or target.Source§fn exist(&self, link: T) -> boolwhere
Self: Sized,
fn exist(&self, link: T) -> boolwhere
Self: Sized,
Returns
true if the link at link exists (internal or external).Source§fn has_usages(&self, link: T) -> boolwhere
Self: Sized,
fn has_usages(&self, link: T) -> boolwhere
Self: Sized,
Returns
true if any other link references link as a source or target.Source§fn rebase_with<F>(&mut self, old: T, new: T, handler: F) -> Result<(), Error<T>>
fn rebase_with<F>(&mut self, old: T, new: T, handler: F) -> Result<(), Error<T>>
Re-points all usages of
old to new, calling handler for each update.Source§impl<T, L> Links<T> for NonNullContentsLinkDeletionResolver<T, L>where
T: LinkReference,
L: Doublets<T>,
impl<T, L> Links<T> for NonNullContentsLinkDeletionResolver<T, L>where
T: LinkReference,
L: Doublets<T>,
Source§fn constants(&self) -> &LinksConstants<T>
fn constants(&self) -> &LinksConstants<T>
Returns the store’s
LinksConstants (any/null/range values).Source§fn count_links(&self, query: &[T]) -> T
fn count_links(&self, query: &[T]) -> T
Counts links that match
query.Source§fn each_links(
&self,
query: &[T],
handler: &mut dyn FnMut(Link<T>) -> Flow,
) -> Flow
fn each_links( &self, query: &[T], handler: &mut dyn FnMut(Link<T>) -> Flow, ) -> Flow
Iterates over links matching
query, calling handler for each.Source§fn create_links(
&mut self,
query: &[T],
handler: &mut dyn FnMut(Link<T>, Link<T>) -> Flow,
) -> Result<Flow, Error<T>>
fn create_links( &mut self, query: &[T], handler: &mut dyn FnMut(Link<T>, Link<T>) -> Flow, ) -> Result<Flow, Error<T>>
Creates one or more links matching
query and reports each creation via handler.Auto Trait Implementations§
impl<T, L> Freeze for NonNullContentsLinkDeletionResolver<T, L>
impl<T, L> RefUnwindSafe for NonNullContentsLinkDeletionResolver<T, L>
impl<T, L> Send for NonNullContentsLinkDeletionResolver<T, L>
impl<T, L> Sync for NonNullContentsLinkDeletionResolver<T, L>
impl<T, L> Unpin for NonNullContentsLinkDeletionResolver<T, L>
impl<T, L> UnsafeUnpin for NonNullContentsLinkDeletionResolver<T, L>
impl<T, L> UnwindSafe for NonNullContentsLinkDeletionResolver<T, L>
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
Source§impl<T, L> DecoratorsExt<T> for Lwhere
T: LinkReference,
L: Doublets<T>,
impl<T, L> DecoratorsExt<T> for Lwhere
T: LinkReference,
L: Doublets<T>,
Source§fn with_uniqueness<P>(
self,
_policy: P,
) -> <P as UniquenessPolicy>::Decorator<T, Self>where
P: UniquenessPolicy,
fn with_uniqueness<P>(
self,
_policy: P,
) -> <P as UniquenessPolicy>::Decorator<T, Self>where
P: UniquenessPolicy,
Source§fn with_usages<P>(self, _policy: P) -> <P as UsagesPolicy>::Decorator<T, Self>where
P: UsagesPolicy,
fn with_usages<P>(self, _policy: P) -> <P as UsagesPolicy>::Decorator<T, Self>where
P: UsagesPolicy,
Source§fn with_usages_validation(self) -> UsagesValidator<T, Self>
fn with_usages_validation(self) -> UsagesValidator<T, Self>
Wraps in
UsagesValidator.Source§fn with_cascade_usages_resolution(self) -> CascadeUsagesResolver<T, Self>
fn with_cascade_usages_resolution(self) -> CascadeUsagesResolver<T, Self>
Wraps in
CascadeUsagesResolver.Source§fn with_inner_reference_existence_validation(
self,
) -> InnerReferenceExistenceValidator<T, Self>
fn with_inner_reference_existence_validation( self, ) -> InnerReferenceExistenceValidator<T, Self>
Wraps in
InnerReferenceExistenceValidator.Source§fn with_non_existent_dependencies_creation(
self,
) -> NonExistentDependenciesCreator<T, Self>
fn with_non_existent_dependencies_creation( self, ) -> NonExistentDependenciesCreator<T, Self>
Wraps in
NonExistentDependenciesCreator.Source§fn with_itself_constant_resolution(
self,
) -> ItselfConstantToSelfReferenceResolver<T, Self>
fn with_itself_constant_resolution( self, ) -> ItselfConstantToSelfReferenceResolver<T, Self>
Wraps in
ItselfConstantToSelfReferenceResolver.Source§fn with_null_constant_resolution(
self,
) -> NullConstantToSelfReferenceResolver<T, Self>
fn with_null_constant_resolution( self, ) -> NullConstantToSelfReferenceResolver<T, Self>
Wraps in
NullConstantToSelfReferenceResolver.Source§fn with_non_null_contents_deletion_resolution(
self,
) -> NonNullContentsLinkDeletionResolver<T, Self>
fn with_non_null_contents_deletion_resolution( self, ) -> NonNullContentsLinkDeletionResolver<T, Self>
Wraps in
NonNullContentsLinkDeletionResolver.Source§fn with_logging<W>(self, writer: W) -> LoggingDecorator<T, Self, W>
fn with_logging<W>(self, writer: W) -> LoggingDecorator<T, Self, W>
Wraps in
LoggingDecorator, logging every mutation to writer.Source§fn with_no_exceptions(self) -> NoExceptionsDecorator<T, Self>
fn with_no_exceptions(self) -> NoExceptionsDecorator<T, Self>
Wraps in
NoExceptionsDecorator.Source§fn with_automatic_uniqueness_and_usages_resolution(
self,
) -> CascadeUniquenessAndUsagesResolver<T, NonNullContentsLinkDeletionResolver<T, CascadeUsagesResolver<T, Self>>>
fn with_automatic_uniqueness_and_usages_resolution( self, ) -> CascadeUniquenessAndUsagesResolver<T, NonNullContentsLinkDeletionResolver<T, CascadeUsagesResolver<T, Self>>>
Builds the same stack as C#
ILinksExtensions.DecorateWithAutomaticUniquenessAndUsagesResolution:
CascadeUsagesResolver innermost, then NonNullContentsLinkDeletionResolver,
then CascadeUniquenessAndUsagesResolver outermost.Source§impl<T, All> DoubletsExt<T> for Allwhere
T: LinkReference,
All: Doublets<T>,
impl<T, All> DoubletsExt<T> for Allwhere
T: LinkReference,
All: Doublets<T>,
Source§fn iter(
&self,
) -> impl Iterator<Item = Link<T>> + ExactSizeIterator + DoubleEndedIterator
fn iter( &self, ) -> impl Iterator<Item = Link<T>> + ExactSizeIterator + DoubleEndedIterator
Returns an iterator over all links in the store.
Source§fn each_iter(
&self,
query: impl ToQuery<T>,
) -> impl Iterator<Item = Link<T>> + ExactSizeIterator + DoubleEndedIterator
fn each_iter( &self, query: impl ToQuery<T>, ) -> impl Iterator<Item = Link<T>> + ExactSizeIterator + DoubleEndedIterator
Returns an iterator over links matching
query.