BoxPredicate

Struct BoxPredicate 

Source
pub struct BoxPredicate<T> { /* private fields */ }
Expand description

A Box-based predicate with single ownership.

This type is suitable for one-time use scenarios where the predicate does not need to be cloned or shared. Composition methods consume self, reflecting the single-ownership model.

§Examples

use prism3_function::predicate::{Predicate, BoxPredicate};

let pred = BoxPredicate::new(|x: &i32| *x > 0);
assert!(pred.test(&5));

// Chaining consumes the predicate
let combined = pred.and(BoxPredicate::new(|x| x % 2 == 0));
assert!(combined.test(&4));

§Author

Haixing Hu

Implementations§

Source§

impl<T: 'static> BoxPredicate<T>

Source

pub fn new<F>(f: F) -> Self
where F: Fn(&T) -> bool + 'static,

Creates a new predicate.

Wraps the provided closure in the appropriate smart pointer type for this predicate implementation.

Source

pub fn new_with_name<F>(name: &str, f: F) -> Self
where F: Fn(&T) -> bool + 'static,

Creates a new named predicate.

Wraps the provided closure and assigns it a name, which is useful for debugging and logging purposes.

Source

pub fn new_with_optional_name<F>(f: F, name: Option<String>) -> Self
where F: Fn(&T) -> bool + 'static,

Creates a new named predicate with an optional name.

Wraps the provided closure and assigns it an optional name.

Source

pub fn name(&self) -> Option<&str>

Gets the name of this predicate.

§Returns

Returns Some(&str) if a name was set, None otherwise.

Source

pub fn set_name(&mut self, name: &str)

Sets the name of this predicate.

§Parameters
  • name - The name to set for this predicate
Source

pub fn always_true() -> Self

Creates a predicate that always returns true.

§Returns

A new BoxPredicate that always returns true.

Source

pub fn always_false() -> Self

Creates a predicate that always returns false.

§Returns

A new BoxPredicate that always returns false.

Source

pub fn and<P>(self, other: P) -> BoxPredicate<T>
where P: Predicate<T> + 'static, T: 'static,

Returns a predicate that represents the logical AND of this predicate and another.

This method consumes self due to single-ownership semantics.

§Parameters
  • other - The other predicate to combine with.
§Returns

A new predicate representing the logical AND.

Source

pub fn or<P>(self, other: P) -> BoxPredicate<T>
where P: Predicate<T> + 'static, T: 'static,

Returns a predicate that represents the logical OR of this predicate and another.

This method consumes self due to single-ownership semantics.

§Parameters
  • other - The other predicate to combine with.
§Returns

A new predicate representing the logical OR.

Source

pub fn not(self) -> BoxPredicate<T>
where T: 'static,

Returns a predicate that represents the logical negation of this predicate.

This method consumes self due to single-ownership semantics.

§Returns

A new predicate representing the logical negation.

Source

pub fn nand<P>(self, other: P) -> BoxPredicate<T>
where P: Predicate<T> + 'static, T: 'static,

Returns a predicate that represents the logical NAND (NOT AND) of this predicate and another.

NAND returns true unless both predicates are true. Equivalent to !(self AND other).

This method consumes self due to single-ownership semantics.

§Parameters
  • other - The other predicate to combine with.
§Returns

A new predicate representing the logical NAND.

Source

pub fn xor<P>(self, other: P) -> BoxPredicate<T>
where P: Predicate<T> + 'static, T: 'static,

Returns a predicate that represents the logical XOR (exclusive OR) of this predicate and another.

XOR returns true if exactly one of the predicates is true.

This method consumes self due to single-ownership semantics.

§Parameters
  • other - The other predicate to combine with.
§Returns

A new predicate representing the logical XOR.

Source

pub fn nor<P>(self, other: P) -> BoxPredicate<T>
where P: Predicate<T> + 'static, T: 'static,

Returns a predicate that represents the logical NOR (NOT OR) of this predicate and another.

NOR returns true only when both predicates are false. Equivalent to !(self OR other).

This method consumes self due to single-ownership semantics.

§Parameters
  • other - The other predicate to combine with.
§Returns

A new predicate representing the logical NOR.

Trait Implementations§

Source§

impl<T> Debug for BoxPredicate<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T> Display for BoxPredicate<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: 'static> Predicate<T> for BoxPredicate<T>

Source§

fn test(&self, value: &T) -> bool

Tests whether the given value satisfies this predicate. Read more
Source§

fn into_box(self) -> BoxPredicate<T>
where T: 'static,

Converts this predicate into a BoxPredicate. Read more
Source§

fn into_rc(self) -> RcPredicate<T>
where T: 'static,

Converts this predicate into an RcPredicate. Read more
Source§

fn into_fn(self) -> impl Fn(&T) -> bool

Converts this predicate into a closure that can be used directly with standard library methods. Read more
Source§

fn into_arc(self) -> ArcPredicate<T>
where Self: Sized + Send + Sync + 'static, T: 'static,

Converts this predicate into an ArcPredicate. Read more

Auto Trait Implementations§

§

impl<T> Freeze for BoxPredicate<T>

§

impl<T> !RefUnwindSafe for BoxPredicate<T>

§

impl<T> !Send for BoxPredicate<T>

§

impl<T> !Sync for BoxPredicate<T>

§

impl<T> Unpin for BoxPredicate<T>

§

impl<T> !UnwindSafe for BoxPredicate<T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.