pub struct Facet {
pub name: String,
pub medium: String,
pub scope: Vec<PatternEntry>,
pub engagement: Option<Value>,
pub preparation: Option<String>,
}Expand description
A Facet — a named way a projection engages with a Medium: the
subset in reach, the engagement contract, and an optional preparation step.
The facet record is deliberately heterogeneous (a source facet typically
carries scope + preparation; a destination facet carries engagement
discipline) — forcing a uniform shape would smuggle complexity elsewhere.
The single-type-with-optional-fields modelling is chosen for machinery
simplicity (concept-doc Open Question 2); the engagement contract stays a
free-form JSON value because its shape is medium-type- and side-specific
(verbs, tools, terminology, discipline) and is not load-bearing for the
loader’s structural validation.
Fields§
§name: StringStable name — projections reference a facet by this.
medium: StringThe Medium (by name) this facet is a perspective on. A facet
always references exactly one medium.
scope: Vec<PatternEntry>Allow/deny selection over the referenced medium. Empty = whole medium.
engagement: Option<Value>Engagement contract — verbs, tools, terminology, discipline. Free-form because the shape differs by medium type and by source/destination side; the engine does not interpret it.
preparation: Option<String>Optional deterministic preparation step (string identifier, e.g.
pdf-to-markdown). Unset for every text medium today. A facet that
names a preparation the engine has no implementation for is accepted at
rest but reported unsupported at run time — no silent skip, no crash.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Facet
impl<'de> Deserialize<'de> for Facet
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Facet
impl StructuralPartialEq for Facet
Auto Trait Implementations§
impl Freeze for Facet
impl RefUnwindSafe for Facet
impl Send for Facet
impl Sync for Facet
impl Unpin for Facet
impl UnsafeUnpin for Facet
impl UnwindSafe for Facet
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.impl<T> Fruit for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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