Skip to main content

TypeDraft

Struct TypeDraft 

Source
#[non_exhaustive]
pub struct TypeDraft<'a> {
Show 14 fields pub name: Option<&'a str>, pub description: Option<&'a str>, pub applicable_occurrence: Option<&'a str>, pub maps_or_identification: Option<Slot6<'a>>, pub tag_or_long_description: Option<&'a str>, pub fallback: Option<&'a str>, pub operation_type: Option<&'a str>, pub user_defined_operation_type: Option<&'a str>, pub partitioning_type: Option<&'a str>, pub user_defined_partitioning_type: Option<&'a str>, pub parameter_takes_precedence: Option<bool>, pub event_trigger_type: Option<&'a str>, pub user_defined_event_trigger_type: Option<&'a str>, pub assembly_place: Option<&'a str>,
}
Expand description

Attributes of a type definition: those every type shares, and the few one type requires on top.

tag_or_long_description and maps_or_identification occupy slots 7 and 6, whose meaning depends on Family. Naming them for both readings keeps a caller from assuming the element-type reading on a resource type, where it would file a tag as a description.

The type-specific fields (#214) carry the attributes IFC4 and IFC4X3 require on four types, as references/ifc-spec declares them:

IfcDoorType       OperationType    : IfcDoorTypeOperationEnum;
IfcWindowType     PartitioningType : IfcWindowTypePartitioningEnum;
IfcEventType      EventTriggerType : IfcEventTriggerTypeEnum;
IfcFurnitureType  AssemblyPlace    : IfcAssemblyPlaceEnum;  (IFC2X3 too)

A value for an attribute the type does not declare in the bound release is refused, never dropped.

The struct is #[non_exhaustive]: build it with TypeDraft::new and the setters, so a field a later release needs can be added without breaking callers.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§name: Option<&'a str>

Name.

§description: Option<&'a str>

Description.

§applicable_occurrence: Option<&'a str>

ApplicableOccurrence, slot 4.

§maps_or_identification: Option<Slot6<'a>>

Slot 6: RepresentationMaps refs, or Identification text.

§tag_or_long_description: Option<&'a str>

Slot 7: Tag on element types, LongDescription otherwise.

§fallback: Option<&'a str>

Slot 8: the USERDEFINED fallback. Required when the predefined type is USERDEFINED.

§operation_type: Option<&'a str>

IfcDoorType.OperationType, an IfcDoorTypeOperationEnum token; required on IfcDoorType.

§user_defined_operation_type: Option<&'a str>

IfcDoorType.UserDefinedOperationType.

§partitioning_type: Option<&'a str>

IfcWindowType.PartitioningType, an IfcWindowTypePartitioningEnum token; required on IfcWindowType.

§user_defined_partitioning_type: Option<&'a str>

IfcWindowType.UserDefinedPartitioningType.

§parameter_takes_precedence: Option<bool>

ParameterTakesPrecedence on IfcDoorType and IfcWindowType.

§event_trigger_type: Option<&'a str>

IfcEventType.EventTriggerType, an IfcEventTriggerTypeEnum token; required on IfcEventType.

§user_defined_event_trigger_type: Option<&'a str>

IfcEventType.UserDefinedEventTriggerType. Required when event_trigger_type is USERDEFINED (CorrectEventTriggerType).

§assembly_place: Option<&'a str>

IfcFurnitureType.AssemblyPlace, an IfcAssemblyPlaceEnum token; required on IfcFurnitureType.

Implementations§

Source§

impl<'a> TypeDraft<'a>

Source

pub fn new() -> Self

Starts an empty draft with every attribute unset.

Source

pub fn name(self, value: &'a str) -> Self

Sets Name, which NameRequired makes mandatory.

Source

pub fn description(self, value: &'a str) -> Self

Sets Description.

Source

pub fn applicable_occurrence(self, value: &'a str) -> Self

Sets ApplicableOccurrence.

Source

pub fn maps_or_identification(self, value: Slot6<'a>) -> Self

Sets slot 6: RepresentationMaps or Identification.

Source

pub fn tag_or_long_description(self, value: &'a str) -> Self

Sets slot 7: Tag or LongDescription.

Source

pub fn fallback(self, value: &'a str) -> Self

Sets the slot-8 USERDEFINED fallback.

Source

pub fn operation_type(self, value: &'a str) -> Self

Sets IfcDoorType.OperationType.

Source

pub fn user_defined_operation_type(self, value: &'a str) -> Self

Sets IfcDoorType.UserDefinedOperationType.

Source

pub fn partitioning_type(self, value: &'a str) -> Self

Sets IfcWindowType.PartitioningType.

Source

pub fn user_defined_partitioning_type(self, value: &'a str) -> Self

Sets IfcWindowType.UserDefinedPartitioningType.

Source

pub fn parameter_takes_precedence(self, value: bool) -> Self

Sets ParameterTakesPrecedence (IfcDoorType, IfcWindowType).

Source

pub fn event_trigger_type(self, value: &'a str) -> Self

Sets IfcEventType.EventTriggerType.

Source

pub fn user_defined_event_trigger_type(self, value: &'a str) -> Self

Sets IfcEventType.UserDefinedEventTriggerType.

Source

pub fn assembly_place(self, value: &'a str) -> Self

Sets IfcFurnitureType.AssemblyPlace.

Trait Implementations§

Source§

impl<'a> Clone for TypeDraft<'a>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for TypeDraft<'a>

Source§

impl<'a> Debug for TypeDraft<'a>

Source§

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

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

impl<'a> Default for TypeDraft<'a>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for TypeDraft<'a>

§

impl<'a> RefUnwindSafe for TypeDraft<'a>

§

impl<'a> Send for TypeDraft<'a>

§

impl<'a> Sync for TypeDraft<'a>

§

impl<'a> Unpin for TypeDraft<'a>

§

impl<'a> UnsafeUnpin for TypeDraft<'a>

§

impl<'a> UnwindSafe for TypeDraft<'a>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.