EntityDescriptor

Struct EntityDescriptor 

Source
pub struct EntityDescriptor {
    pub type_name: &'static str,
    pub type_id: TypeId,
    pub solution_field: &'static str,
    pub is_collection: bool,
    pub variable_descriptors: Vec<VariableDescriptor>,
    pub extractor: Option<Box<dyn EntityExtractor>>,
    pub id_field: Option<&'static str>,
    pub pin_field: Option<&'static str>,
}
Expand description

Describes a planning entity type at runtime.

Fields§

§type_name: &'static str

Name of the entity type.

§type_id: TypeId

TypeId of the entity type.

§solution_field: &'static str

Field name in the solution (for entity collections).

§is_collection: bool

Whether this is a collection of entities.

§variable_descriptors: Vec<VariableDescriptor>

Variable descriptors for this entity (metadata only).

§extractor: Option<Box<dyn EntityExtractor>>

Extractor for getting entities from a solution.

§id_field: Option<&'static str>

The ID field name, if any.

§pin_field: Option<&'static str>

The pinning field name, if any.

Implementations§

Source§

impl EntityDescriptor

Source

pub fn new( type_name: &'static str, type_id: TypeId, solution_field: &'static str, ) -> Self

Creates a new EntityDescriptor.

Source

pub fn with_extractor(self, extractor: Box<dyn EntityExtractor>) -> Self

Sets the entity extractor for this descriptor.

Source

pub fn with_variable(self, descriptor: VariableDescriptor) -> Self

Adds a variable descriptor (metadata only).

Source

pub fn with_id_field(self, field: &'static str) -> Self

Sets the ID field.

Source

pub fn with_pin_field(self, field: &'static str) -> Self

Sets the pin field.

Source

pub fn genuine_variable_descriptors( &self, ) -> impl Iterator<Item = &VariableDescriptor>

Returns genuine (non-shadow) variable descriptors.

Source

pub fn shadow_variable_descriptors( &self, ) -> impl Iterator<Item = &VariableDescriptor>

Returns shadow variable descriptors.

Source

pub fn find_variable(&self, name: &str) -> Option<&VariableDescriptor>

Finds a variable descriptor by name.

Source

pub fn has_genuine_variables(&self) -> bool

Returns true if this entity has any genuine variables.

Source

pub fn has_extractor(&self) -> bool

Returns whether this descriptor has an entity extractor.

Source

pub fn entity_count(&self, solution: &dyn Any) -> Option<usize>

Returns the number of entities in the solution.

Returns None if no extractor is set or solution type doesn’t match.

Source

pub fn get_entity<'a>( &self, solution: &'a dyn Any, index: usize, ) -> Option<&'a dyn Any>

Gets a reference to an entity by index.

Returns None if no extractor is set, index is out of bounds, or solution type doesn’t match.

Source

pub fn get_entity_mut<'a>( &self, solution: &'a mut dyn Any, index: usize, ) -> Option<&'a mut dyn Any>

Gets a mutable reference to an entity by index.

Returns None if no extractor is set, index is out of bounds, or solution type doesn’t match.

Source

pub fn entity_refs(&self, solution: &dyn Any) -> Vec<EntityRef>

Returns references to all entities in the solution.

Returns an empty vector if no extractor is set or solution type doesn’t match.

Source

pub fn for_each_entity<F>(&self, solution: &dyn Any, f: F) -> Option<()>
where F: FnMut(usize, &dyn Any),

Iterates over all entities, applying a function to each.

Returns None if no extractor is set or solution type doesn’t match.

Source

pub fn for_each_entity_mut<F>(&self, solution: &mut dyn Any, f: F) -> Option<()>
where F: FnMut(usize, &mut dyn Any),

Iterates over all entities mutably, applying a function to each.

Note: This requires the solution to be borrowed mutably for each entity access, which means the callback cannot hold references to previous entities.

Trait Implementations§

Source§

impl Clone for EntityDescriptor

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EntityDescriptor

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.