Skip to main content

Document

Trait Document 

Source
pub trait Document: Serialize + DeserializeOwned {
    const SCHEMA: &'static str;
    const LIMITS: ParseLimits;

    // Required method
    fn schema(&self) -> &str;

    // Provided methods
    fn parse(bytes: &[u8]) -> Result<Self, DocumentError> { ... }
    fn canonical(&self) -> Result<Vec<u8>, CanonicalError> { ... }
    fn record_canonical(&self) -> Result<Vec<u8>, CanonicalError>
       where Self: PartialEq { ... }
    fn record_digest(&self) -> Result<ContentDigest, CanonicalError>
       where Self: PartialEq { ... }
}
Expand description

A Rustev document with a schema string and a limit set.

Required Associated Constants§

Source

const SCHEMA: &'static str

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

Source

const LIMITS: ParseLimits

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

Required Methods§

Source

fn schema(&self) -> &str

The value of the document’s own schema field.

Provided Methods§

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.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl Document for AcquireRequest

Source§

const SCHEMA: &'static str = ACQUIRE

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for AcquireResponse

Source§

const SCHEMA: &'static str = ACQUIRE

Source§

const LIMITS: ParseLimits = crate::limits::RECORD_V1

Source§

impl Document for AcquisitionPage

Source§

const SCHEMA: &'static str = schema::ACQUISITION_PAGE

Source§

const LIMITS: ParseLimits = crate::limits::SNAPSHOT_V1

Source§

impl Document for AcquisitionRequest

Source§

const SCHEMA: &'static str = schema::ACQUISITION_REQUEST

Source§

const LIMITS: ParseLimits = crate::limits::DESCRIPTOR_V1

Source§

impl Document for BackendDescriptor

Source§

const SCHEMA: &'static str = schema::BACKEND

Source§

const LIMITS: ParseLimits = DESCRIPTOR_V1

Source§

impl Document for BackendOutputDoc

Source§

const SCHEMA: &'static str = schema::BACKEND_OUTPUT

Source§

const LIMITS: ParseLimits = BACKEND_OUTPUT_V1

Source§

impl Document for BundleDefinition

Source§

const SCHEMA: &'static str = <crate::definition::Definition as Document>::SCHEMA

Source§

const LIMITS: ParseLimits = crate::limits::DEFINITION_V1

Source§

impl Document for CacheEntry

Source§

const SCHEMA: &'static str = schema::CACHE_ENTRY

Source§

const LIMITS: ParseLimits = RECORD_V1

Source§

impl Document for CalibrationArtifact

Source§

const SCHEMA: &'static str = schema::CALIBRATION

Source§

const LIMITS: ParseLimits = DESCRIPTOR_V1

Source§

impl Document for rustev_contract::remote::CancelRequest

Source§

const SCHEMA: &'static str = schema::REMOTE_CANCEL

Source§

const LIMITS: ParseLimits = REMOTE_V1

Source§

impl Document for rustev_contract::remote_context::CancelRequest

Source§

const SCHEMA: &'static str = CANCEL

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for rustev_contract::remote::CancelResponse

Source§

const SCHEMA: &'static str = schema::REMOTE_CANCEL

Source§

const LIMITS: ParseLimits = REMOTE_V1

Source§

impl Document for rustev_contract::remote_context::CancelResponse

Source§

const SCHEMA: &'static str = CANCEL

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for Definition

Source§

const SCHEMA: &'static str = schema::DEFINITION

Source§

const LIMITS: ParseLimits = DEFINITION_V1

Source§

impl Document for DeliverRequest

Source§

const SCHEMA: &'static str = DELIVER

Source§

const LIMITS: ParseLimits = DELIVER_LIMITS

Source§

impl Document for DeliverResponse

Source§

const SCHEMA: &'static str = DELIVER

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for rustev_contract::remote::DescribeRequest

Source§

const SCHEMA: &'static str = schema::REMOTE_DESCRIBE

Source§

const LIMITS: ParseLimits = REMOTE_V1

Source§

impl Document for rustev_contract::remote_context::DescribeRequest

Source§

const SCHEMA: &'static str = DESCRIBE

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for rustev_contract::remote_sink::DescribeRequest

Source§

const SCHEMA: &'static str = DESCRIBE

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for rustev_contract::remote::DescribeResponse

Source§

const SCHEMA: &'static str = schema::REMOTE_DESCRIBE

Source§

const LIMITS: ParseLimits = REMOTE_V1

Source§

impl Document for rustev_contract::remote_context::DescribeResponse

Source§

const SCHEMA: &'static str = DESCRIBE

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for rustev_contract::remote_sink::DescribeResponse

Source§

const SCHEMA: &'static str = DESCRIBE

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for DynamicCapability

Source§

const SCHEMA: &'static str = schema::DYNAMIC_CAPABILITY

Source§

const LIMITS: ParseLimits = DESCRIPTOR_V1

Source§

impl Document for DynamicOutcome

Source§

const SCHEMA: &'static str = schema::DYNAMIC_OUTCOME

Source§

const LIMITS: ParseLimits = RECORD_V1

Source§

impl Document for DynamicQuestion

Source§

const SCHEMA: &'static str = schema::DYNAMIC_QUESTION

Source§

const LIMITS: ParseLimits = DYNAMIC_QUESTION_V1

Source§

impl Document for EvalReport

Source§

const SCHEMA: &'static str = schema::EVAL_REPORT

Source§

const LIMITS: ParseLimits = RECORD_V1

Source§

impl Document for EvidenceRecord

Source§

const SCHEMA: &'static str = schema::EVIDENCE

Source§

const LIMITS: ParseLimits = RECORD_V1

Source§

impl Document for rustev_contract::remote::ExchangeRecord

Source§

const SCHEMA: &'static str = schema::REMOTE_EXCHANGE

Source§

const LIMITS: ParseLimits = EXCHANGE_V1

Source§

impl Document for rustev_contract::remote_context::ExchangeRecord

Source§

const SCHEMA: &'static str = EXCHANGE

Source§

const LIMITS: ParseLimits = crate::limits::EXCHANGE_V1

Source§

impl Document for ExecutionPolicy

Source§

const SCHEMA: &'static str = schema::EXECUTION

Source§

const LIMITS: ParseLimits = DESCRIPTOR_V1

Source§

impl Document for Explanation

Source§

const SCHEMA: &'static str = schema::EXPLANATION

Source§

const LIMITS: ParseLimits = REPLAY_V1

Source§

impl Document for ExtractRequest

Source§

const SCHEMA: &'static str = crate::schema::EXTRACT_REQUEST

Source§

const LIMITS: ParseLimits = crate::limits::RECORD_V1

Source§

impl Document for ExtractRules

Source§

const SCHEMA: &'static str = crate::schema::EXTRACT_RULES

Source§

const LIMITS: ParseLimits = crate::limits::DESCRIPTOR_V1

Source§

impl Document for FetchRequest

Source§

const SCHEMA: &'static str = FETCH

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for FetchResponse

Source§

const SCHEMA: &'static str = FETCH

Source§

const LIMITS: ParseLimits = crate::limits::RECORD_V1

Source§

impl Document for GenerateRequest

Source§

const SCHEMA: &'static str = crate::schema::GENERATE_REQUEST

Source§

const LIMITS: ParseLimits = crate::limits::RECORD_V1

Source§

impl Document for InferRequest

Source§

const SCHEMA: &'static str = schema::REMOTE_INFER

Source§

const LIMITS: ParseLimits = REMOTE_V1

Source§

impl Document for InferResponse

Source§

const SCHEMA: &'static str = schema::REMOTE_INFER

Source§

const LIMITS: ParseLimits = REMOTE_V1

Source§

impl Document for Invalidation

Source§

const SCHEMA: &'static str = INVALIDATION

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for InvalidationsRequest

Source§

const SCHEMA: &'static str = INVALIDATIONS

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for InvalidationsResponse

Source§

const SCHEMA: &'static str = INVALIDATIONS

Source§

const LIMITS: ParseLimits = crate::limits::REMOTE_V1

Source§

impl Document for Judgment

Source§

const SCHEMA: &'static str = schema::JUDGMENT

Source§

const LIMITS: ParseLimits = RECORD_V1

Source§

impl Document for LiveReexecution

Source§

const SCHEMA: &'static str = schema::LIVE_REEXECUTION

Source§

const LIMITS: ParseLimits = REPLAY_V1

Source§

impl Document for Plan

Source§

const SCHEMA: &'static str = schema::PLAN

Source§

const LIMITS: ParseLimits = PLAN_V1

Source§

impl Document for PlanBundle

Source§

const SCHEMA: &'static str = "rustev.plan-bundle/1"

Source§

const LIMITS: ParseLimits = BUNDLE_LIMITS

Source§

impl Document for PlanBundleSignature

Source§

const SCHEMA: &'static str = "rustev.plan-bundle-signature/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for PlanDiff

Source§

const SCHEMA: &'static str = schema::PLAN_DIFF

Source§

const LIMITS: ParseLimits

Source§

impl Document for PlanRegistration

Source§

const SCHEMA: &'static str = "rustev.plan-registration/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for Profile

Source§

const SCHEMA: &'static str = schema::PROFILE

Source§

const LIMITS: ParseLimits = DESCRIPTOR_V1

Source§

impl Document for PromptTemplate

Source§

const SCHEMA: &'static str = crate::schema::PROMPT_TEMPLATE

Source§

const LIMITS: ParseLimits = crate::limits::DEFINITION_V1

Source§

impl Document for RedactionPolicy

Source§

const SCHEMA: &'static str = REDACTION

Source§

const LIMITS: ParseLimits = DESCRIPTOR_V1

Source§

impl Document for ReplayBundle

Source§

const SCHEMA: &'static str = schema::REPLAY

Source§

const LIMITS: ParseLimits = REPLAY_V1

Source§

impl Document for RequestDoc

Source§

const SCHEMA: &'static str = schema::REQUEST

Source§

const LIMITS: ParseLimits = REQUEST_V1

Source§

impl Document for RunRecord

Source§

const SCHEMA: &'static str = schema::RUN

Source§

const LIMITS: ParseLimits = RECORD_V1

Source§

impl Document for RuntimeReasonDoc

Source§

const SCHEMA: &'static str = schema::RUNTIME_REASON

Source§

const LIMITS: ParseLimits = RECORD_V1

Source§

impl Document for Serve

Source§

const SCHEMA: &'static str = "rustev.serve/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeCancel

Source§

const SCHEMA: &'static str = "rustev.serve-cancel/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeConfig

Source§

const SCHEMA: &'static str = "rustev.serve-config/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeDecide

Source§

const SCHEMA: &'static str = "rustev.serve-decide/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeDecision

Source§

const SCHEMA: &'static str = "rustev.serve-decision/1"

Source§

const LIMITS: ParseLimits = DECISION_LIMITS

Source§

impl Document for ServeDecisionState

Source§

const SCHEMA: &'static str = "rustev.serve-decision-state/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeEvaluate

Source§

const SCHEMA: &'static str = "rustev.serve-evaluate/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeEvent

Source§

const SCHEMA: &'static str = "rustev.serve-event/1"

Source§

const LIMITS: ParseLimits

Source§

impl Document for ServeExplain

Source§

const SCHEMA: &'static str = "rustev.serve-explain/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeExplanation

Source§

const SCHEMA: &'static str = "rustev.serve-explanation/1"

Source§

const LIMITS: ParseLimits = EXPLANATION_LIMITS

Source§

impl Document for ServeInvalidations

Source§

const SCHEMA: &'static str = "rustev.serve-invalidations/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeInvalidationsAck

Source§

const SCHEMA: &'static str = "rustev.serve-invalidations-ack/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeReadiness

Source§

const SCHEMA: &'static str = "rustev.serve-readiness/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeRefusal

Source§

const SCHEMA: &'static str = "rustev.serve-refusal/1"

Source§

const LIMITS: ParseLimits = REFUSAL_LIMITS

Source§

impl Document for ServeRegister

Source§

const SCHEMA: &'static str = "rustev.serve-register/1"

Source§

const LIMITS: ParseLimits = BUNDLE_LIMITS

Source§

impl Document for ServeReplay

Source§

const SCHEMA: &'static str = "rustev.serve-replay/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeService

Source§

const SCHEMA: &'static str = "rustev.serve-service/1"

Source§

const LIMITS: ParseLimits = SERVICE_LIMITS

Source§

impl Document for ServeShutdown

Source§

const SCHEMA: &'static str = "rustev.serve-shutdown/1"

Source§

const LIMITS: ParseLimits

Source§

impl Document for Snapshot

Source§

const SCHEMA: &'static str = schema::SNAPSHOT

Source§

const LIMITS: ParseLimits = SNAPSHOT_V1

Source§

impl Document for SourceDescriptor

Source§

const SCHEMA: &'static str = schema::SOURCE

Source§

const LIMITS: ParseLimits = DESCRIPTOR_V1

Source§

impl Document for TextResult

Source§

const SCHEMA: &'static str = crate::schema::TEXT_RESULT

Source§

const LIMITS: ParseLimits = crate::limits::RECORD_V1

Source§

impl Document for TraceLine

Source§

const SCHEMA: &'static str = TRACE

Source§

const LIMITS: ParseLimits = TRACE_V1