pub struct Native<D: DataT + ?Sized> { /* private fields */ }Expand description
A filter which is implemented using function pointers.
Implementations§
Source§impl<D: DataT> Native<D>
impl<D: DataT> Native<D>
Sourcepub const fn new(run: RunPtr<D>) -> Self
pub const fn new(run: RunPtr<D>) -> Self
Create a native filter from a run function.
A filter created this way initially supports neither paths nor updates.
For that, use Self::with_paths and Self::with_update.
Sourcepub const fn with_paths(self, paths: PathsPtr<D>) -> Self
pub const fn with_paths(self, paths: PathsPtr<D>) -> Self
Specify a paths function (used for path(...)).
Sourcepub const fn with_update(self, update: UpdatePtr<D>) -> Self
pub const fn with_update(self, update: UpdatePtr<D>) -> Self
Specify an update function (used for filter |= ...).
If an update function is given, then a paths function should be implemented too.
Auto Trait Implementations§
impl<D> Freeze for Native<D>where
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>)) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Freeze,
for<'a> fn((Ctx<'a, D>, (<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>))) -> Box<dyn Iterator<Item = Result<(<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>), Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Freeze,
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>), Box<dyn Update<'a, <D as DataT>::V<'a>, Output = Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>> + 'a>) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Freeze,
D: ?Sized,
impl<D> RefUnwindSafe for Native<D>where
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>)) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: RefUnwindSafe,
for<'a> fn((Ctx<'a, D>, (<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>))) -> Box<dyn Iterator<Item = Result<(<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>), Exn<'a, <D as DataT>::V<'a>>>> + 'a>: RefUnwindSafe,
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>), Box<dyn Update<'a, <D as DataT>::V<'a>, Output = Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>> + 'a>) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: RefUnwindSafe,
D: ?Sized,
impl<D> Send for Native<D>where
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>)) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Send,
for<'a> fn((Ctx<'a, D>, (<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>))) -> Box<dyn Iterator<Item = Result<(<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>), Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Send,
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>), Box<dyn Update<'a, <D as DataT>::V<'a>, Output = Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>> + 'a>) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Send,
D: ?Sized,
impl<D> Sync for Native<D>where
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>)) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Sync,
for<'a> fn((Ctx<'a, D>, (<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>))) -> Box<dyn Iterator<Item = Result<(<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>), Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Sync,
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>), Box<dyn Update<'a, <D as DataT>::V<'a>, Output = Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>> + 'a>) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Sync,
D: ?Sized,
impl<D> Unpin for Native<D>where
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>)) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Unpin,
for<'a> fn((Ctx<'a, D>, (<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>))) -> Box<dyn Iterator<Item = Result<(<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>), Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Unpin,
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>), Box<dyn Update<'a, <D as DataT>::V<'a>, Output = Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>> + 'a>) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: Unpin,
D: ?Sized,
impl<D> UnsafeUnpin for Native<D>where
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>)) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: UnsafeUnpin,
for<'a> fn((Ctx<'a, D>, (<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>))) -> Box<dyn Iterator<Item = Result<(<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>), Exn<'a, <D as DataT>::V<'a>>>> + 'a>: UnsafeUnpin,
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>), Box<dyn Update<'a, <D as DataT>::V<'a>, Output = Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>> + 'a>) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: UnsafeUnpin,
D: ?Sized,
impl<D> UnwindSafe for Native<D>where
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>)) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: UnwindSafe,
for<'a> fn((Ctx<'a, D>, (<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>))) -> Box<dyn Iterator<Item = Result<(<D as DataT>::V<'a>, List<<D as DataT>::V<'a>>), Exn<'a, <D as DataT>::V<'a>>>> + 'a>: UnwindSafe,
for<'a> fn((Ctx<'a, D>, <D as DataT>::V<'a>), Box<dyn Update<'a, <D as DataT>::V<'a>, Output = Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>> + 'a>) -> Box<dyn Iterator<Item = Result<<D as DataT>::V<'a>, Exn<'a, <D as DataT>::V<'a>>>> + 'a>: UnwindSafe,
D: ?Sized,
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