pub struct StepStats {
pub total: usize,
pub written: usize,
pub copies_refused: usize,
pub refused_refs: usize,
pub attribute_edits_refused: usize,
pub owner_history_unfilled: usize,
pub required_slots_unfilled: usize,
pub ifc4_required_slots_unfilled: usize,
pub enum_values_lost: usize,
pub enum_values_refused: usize,
}Expand description
Coverage stats for a STEP export.
Fields§
§total: usizeEntities in the source model.
written: usizeEntities written (after filtering + reference closure).
copies_refused: usizeCopy-on-write mutations the file could not express, so none was made. Non-zero means an edit the caller asked for is not in the output, and the caller is the only one who can say what to do about it.
refused_refs: usize#<digits> references above u32::MAX refused (issue #3421) while
resolving a filtered export’s reference closure. The referenced record
could never itself be a real entity, so this excludes nothing
reachable — it only says the source has an id ifc-lite can’t hold (#3752).
attribute_edits_refused: usizeRecords with a root-attribute edit that could not be applied: the
record’s own argument list did not scan into slots, so the line was
emitted as the source wrote it (issue #4125), or an edit’s index is
past the record’s arity, so that edit was dropped and the others kept.
Non-zero means an edit the caller asked for is not in the output.
Counted rather than left as an unchanged line, because a refusal that
looks like a successful no-op is the failure this whole family is
about: writing by index into a mis-scanned list lands on the wrong
attribute and reports success.
owner_history_unfilled: usizeRecords written to an IFC2X3 downgrade with $ in OwnerHistory,
which IFC2X3 requires, because the export writes no IfcOwnerHistory
to point it at (#4686). Non-zero means the file is not valid IFC2X3.
Records the source gave $ are otherwise pointed at the first owner
history the export writes; none is invented.
required_slots_unfilled: usizeSLOTS other than OwnerHistory written to an IFC2X3 export with $
where IFC2X3 requires a value and the schema offers no default that
claims nothing (#4714): measures, labels, identifiers, entity
references, and enums with no NOTDEFINED member such as
IfcBuildingStorey.CompositionType. Non-zero means the file is not
valid IFC2X3. Counted per slot, not per record: one record can leave
several. Slots whose IFC2X3 declaration DOES offer such a default take
.NOTDEFINED. or .F. and are not counted.
ifc4_required_slots_unfilled: usizeSLOTS written to an IFC4X3/IFC5 -> IFC4 downgrade with $ where IFC4
requires a value (#5307, the Rust twin of #5202). The converter never
invents one: no measure, label, identifier, reference, flag or enum.
Non-zero means the file is not valid IFC4. Counted per slot, not per
record. Zero for every other direction, including IFC2X3 -> IFC4.
enum_values_lost: usizeEnum values the target schema does not define that a conversion wrote
as .NOTDEFINED. or $, or as .USERDEFINED. without room for the
member name (#5365). Non-zero means information was lost.
enum_values_refused: usizeEnum values the target schema does not define and offers no valid replacement for, so they were kept as written (#5365). Non-zero means the file is not valid against its header.
Trait Implementations§
Source§impl From<&LogExportStats> for StepStats
impl From<&LogExportStats> for StepStats
Source§fn from(s: &LogExportStats) -> Self
fn from(s: &LogExportStats) -> Self
Auto Trait Implementations§
impl Freeze for StepStats
impl RefUnwindSafe for StepStats
impl Send for StepStats
impl Sync for StepStats
impl Unpin for StepStats
impl UnwindSafe for StepStats
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreSource§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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.