Skip to main content

LabelPolicy

Enum LabelPolicy 

Source
pub enum LabelPolicy {
    Opaque,
    EntityNameDefault,
    ExternalKeyDefault,
    OpaqueByDefault,
}
Expand description

Controls how IDs are displayed to humans (via .labeled()).

§Scope

This enum affects only human-facing output. It does NOT affect:

  • Display/to_string() → always canonical
  • Serialize/serde → always canonical
  • Database storage → always canonical
  • ID construction → no complexity added
  • Equality/hashing → based on canonical ID only

§Usage

Specified on the Label trait (and delegated from Provenance) as POLICY constant. Controls the default behavior of .labeled() when called with no arguments.

Variants§

§

Opaque

No preference; defaults to canonical output but encourages explicit mode selection.

Used when the provenance doesn’t have a strong default preference.

Output Scenarios:

  • id.to_string(): "value" (Canonical)
  • id.labeled().to_string(): "value" (Default = None)
  • id.labeled().mode(LabelMode::None).to_string(): "value"
  • id.labeled().mode(LabelMode::Short).to_string(): "Entity::value"
  • id.labeled().mode(LabelMode::Full).to_string(): "Entity@prov::value"
§

EntityNameDefault

Default to showing the entity type name in human output.

Used for internal origins (Generated, Derived) where the entity type provides sufficient context without needing to show provenance details.

Output Scenarios:

  • id.to_string(): "value" (Canonical)
  • id.labeled().to_string(): "Entity::value" (Default = Short)
  • id.labeled().mode(LabelMode::None).to_string(): "value"
  • id.labeled().mode(LabelMode::Short).to_string(): "Entity::value"
  • id.labeled().mode(LabelMode::Full).to_string(): "Entity@prov::value"
§

ExternalKeyDefault

Default to showing both entity and provenance in human output.

Used for external origins (External, Imported) where knowing the source system is critical for understanding and identifying the ID.

Output Scenarios:

  • id.to_string(): "value" (Canonical)
  • id.labeled().to_string(): "Entity@prov::value" (Default = Full)
  • id.labeled().mode(LabelMode::None).to_string(): "value"
  • id.labeled().mode(LabelMode::Short).to_string(): "Entity::value"
  • id.labeled().mode(LabelMode::Full).to_string(): "Entity@prov::value"
§

OpaqueByDefault

Hide all labels by default; only show on explicit request.

Used for sensitive or transient sources (Temporary, ClientProvided) where the ID itself might be sensitive and context shouldn’t leak in logs unless necessary.

Output Scenarios:

  • id.to_string(): "value" (Canonical)
  • id.labeled().to_string(): "value" (Default = None)
  • id.labeled().mode(LabelMode::None).to_string(): "value"
  • id.labeled().mode(LabelMode::Short).to_string(): "Entity::value"
  • id.labeled().mode(LabelMode::Full).to_string(): "Entity@prov::value"

Trait Implementations§

Source§

impl Clone for LabelPolicy

Source§

fn clone(&self) -> LabelPolicy

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 LabelPolicy

Source§

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

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

impl From<LabelPolicy> for LabelMode

Source§

fn from(policy: LabelPolicy) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for LabelPolicy

Source§

fn eq(&self, other: &LabelPolicy) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for LabelPolicy

Source§

impl Eq for LabelPolicy

Source§

impl StructuralPartialEq for LabelPolicy

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> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V