Skip to main content

RedactionPolicy

Struct RedactionPolicy 

Source
pub struct RedactionPolicy {
    pub schema: String,
    pub classes: BTreeMap<FieldClass, Action>,
    pub fields: Vec<FieldOverride>,
    pub content_events: Vec<String>,
}
Expand description

A redaction policy, rustev.redaction/1 (3.4.1). Parse it with RedactionPolicy::parse_validated; a policy that has not passed RedactionPolicy::validate is never applied.

Fields§

§schema: String§classes: BTreeMap<FieldClass, Action>

Class-wide actions; an unnamed class takes its default (3.4.3).

§fields: Vec<FieldOverride>

Per-field overrides, each naming one catalogue field exactly.

§content_events: Vec<String>

Catalogue content fields whose GenAI content events may be emitted.

Implementations§

Source§

impl RedactionPolicy

Source

pub fn parse_validated(bytes: &[u8]) -> Result<Self, PolicyError>

Parse and validate (3.4.1, 3.4.2).

Source

pub fn validate(&self) -> Result<(), PolicyError>

Every refusal of 3.4.2, naming the entry; the first one found.

Source

pub fn policy_id(&self) -> RedactionPolicyId

The policy’s identity, sha256: of its canonical bytes (3.4.1).

Source

pub fn class_action(&self, class: FieldClass) -> Action

The class action: the classes entry, else the class default.

Source

pub fn action(&self, field: &str, class: FieldClass) -> Action

The effective action for field holding a value of class (3.4.4): allow for a fixed field, else its fields override, else its class’s entry, else the class default.

Source

pub fn reader_action(&self, field: &str) -> Option<Action>

The action a reader that does not know the value’s class applies to field (3.11.3): a fixed field is allow; an override applies as written; a field with a fixed class takes that class’s action; a field under the lineage rule (3.3.2) takes the most withholding action among every class the rule can assign, so the reader never shows more than the policy allows for the value’s actual class. None for a key outside the catalogue.

Source

pub fn needs_key(&self) -> bool

Whether any action this policy can apply is digest, which needs a key (3.4.5).

Source

pub fn view(&self, field: &str, attr: &TraceAttr) -> View

How a reader holding no key shows one attribute written as attr under the key field (3.11.3): drop withholds it; allow shows it as written; digest shows it only if the line marks it digest; truncate{bytes} cuts a value marked allow or truncated and shows a digest as is. A key outside the catalogue is never shown.

Trait Implementations§

Source§

impl Clone for RedactionPolicy

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 Debug for RedactionPolicy

Source§

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

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

impl Default for RedactionPolicy

Source§

fn default() -> Self

The default policy (3.4.3): every class at its default action, no override, no content event. Also the effective policy when the host supplies none.

Source§

impl<'de> Deserialize<'de> for RedactionPolicy

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Document for RedactionPolicy

Source§

const SCHEMA: &'static str = REDACTION

The schema string this document carries (spec 002, 3.2.1).
Source§

const LIMITS: ParseLimits = DESCRIPTOR_V1

The limit set its bytes are scanned against (spec 002, 3.2.5).
Source§

fn schema(&self) -> &str

The value of the document’s own schema field.
Source§

fn parse(bytes: &[u8]) -> Result<Self, DocumentError>

Scan, deserialize and check the schema string.
Source§

fn canonical(&self) -> Result<Vec<u8>, CanonicalError>

The canonical bytes (spec 002, 3.3.1).
Source§

fn record_canonical(&self) -> Result<Vec<u8>, CanonicalError>
where Self: PartialEq,

The record canonical bytes (spec 004, 5.6): the canonical bytes, with finite fractional numbers written in shortest round-trip form.
Source§

fn record_digest(&self) -> Result<ContentDigest, CanonicalError>
where Self: PartialEq,

sha256(SCHEMA || 0x00 || record canonical bytes) (spec 004, 3.1.6). Equal to the identity of an identified document.
Source§

impl Eq for RedactionPolicy

Source§

impl Identified for RedactionPolicy

Source§

type Id = RedactionPolicyId

Source§

fn id(&self) -> Result<Self::Id, CanonicalError>

sha256(SCHEMA || 0x00 || canonical bytes) (spec 002, 3.3.2).
Source§

impl JsonSchema for RedactionPolicy

Source§

fn schema_name() -> Cow<'static, str>

The name of the generated JSON Schema. Read more
Source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
Source§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
Source§

fn inline_schema() -> bool

Whether JSON Schemas generated for this type should be included directly in parent schemas, rather than being re-used where possible using the $ref keyword. Read more
Source§

impl PartialEq for RedactionPolicy

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl Serialize for RedactionPolicy

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for RedactionPolicy

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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

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.