ParseDocument

Trait ParseDocument 

Source
pub trait ParseDocument<'doc>: Sized {
    // Required method
    fn parse(
        doc: &'doc EureDocument,
        node_id: NodeId,
    ) -> Result<Self, ParseError>;
}
Expand description

Trait for parsing Rust types from Eure documents.

Types implementing this trait can be constructed from EureDocument. Used for type-safe extraction of structures from documents during conversion.

§Lifetime Parameter

The 'doc lifetime ties the parsed output to the document’s lifetime, allowing zero-copy parsing for reference types like &'doc str.

§Examples

// Reference type - borrows from document
impl<'doc> ParseDocument<'doc> for &'doc str { ... }

// Owned type - no lifetime dependency
impl ParseDocument<'_> for String { ... }

Required Methods§

Source

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Parse a value of this type from an Eure document at the given node.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl ParseDocument<'_> for bool

Source§

fn parse(doc: &EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl ParseDocument<'_> for f32

Source§

fn parse(doc: &EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl ParseDocument<'_> for f64

Source§

fn parse(doc: &EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl ParseDocument<'_> for i32

Source§

fn parse(doc: &EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl ParseDocument<'_> for i64

Source§

fn parse(doc: &EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl ParseDocument<'_> for u32

Source§

fn parse(doc: &EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl ParseDocument<'_> for u64

Source§

fn parse(doc: &EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl ParseDocument<'_> for usize

Source§

fn parse(doc: &EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl ParseDocument<'_> for String

Source§

fn parse(doc: &EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl ParseDocument<'_> for BigInt

Source§

fn parse(doc: &EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc> ParseDocument<'doc> for &'doc str

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>> ParseDocument<'doc> for (A,)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>> ParseDocument<'doc> for (A, B)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>, F: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E, F)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>, F: ParseDocument<'doc>, G: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E, F, G)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>, F: ParseDocument<'doc>, G: ParseDocument<'doc>, H: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E, F, G, H)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>, F: ParseDocument<'doc>, G: ParseDocument<'doc>, H: ParseDocument<'doc>, I: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>, F: ParseDocument<'doc>, G: ParseDocument<'doc>, H: ParseDocument<'doc>, I: ParseDocument<'doc>, J: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I, J)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>, F: ParseDocument<'doc>, G: ParseDocument<'doc>, H: ParseDocument<'doc>, I: ParseDocument<'doc>, J: ParseDocument<'doc>, K: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I, J, K)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>, F: ParseDocument<'doc>, G: ParseDocument<'doc>, H: ParseDocument<'doc>, I: ParseDocument<'doc>, J: ParseDocument<'doc>, K: ParseDocument<'doc>, L: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I, J, K, L)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>, F: ParseDocument<'doc>, G: ParseDocument<'doc>, H: ParseDocument<'doc>, I: ParseDocument<'doc>, J: ParseDocument<'doc>, K: ParseDocument<'doc>, L: ParseDocument<'doc>, M: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I, J, K, L, M)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>, F: ParseDocument<'doc>, G: ParseDocument<'doc>, H: ParseDocument<'doc>, I: ParseDocument<'doc>, J: ParseDocument<'doc>, K: ParseDocument<'doc>, L: ParseDocument<'doc>, M: ParseDocument<'doc>, N: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>, F: ParseDocument<'doc>, G: ParseDocument<'doc>, H: ParseDocument<'doc>, I: ParseDocument<'doc>, J: ParseDocument<'doc>, K: ParseDocument<'doc>, L: ParseDocument<'doc>, M: ParseDocument<'doc>, N: ParseDocument<'doc>, O: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, A: ParseDocument<'doc>, B: ParseDocument<'doc>, C: ParseDocument<'doc>, D: ParseDocument<'doc>, E: ParseDocument<'doc>, F: ParseDocument<'doc>, G: ParseDocument<'doc>, H: ParseDocument<'doc>, I: ParseDocument<'doc>, J: ParseDocument<'doc>, K: ParseDocument<'doc>, L: ParseDocument<'doc>, M: ParseDocument<'doc>, N: ParseDocument<'doc>, O: ParseDocument<'doc>, P: ParseDocument<'doc>> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Source§

impl<'doc, T> ParseDocument<'doc> for Vec<T>
where T: ParseDocument<'doc>,

Source§

fn parse(doc: &'doc EureDocument, node_id: NodeId) -> Result<Self, ParseError>

Implementors§

Source§

impl ParseDocument<'_> for VariantRepr

Source§

impl ParseDocument<'_> for PrimitiveValue

Source§

impl ParseDocument<'_> for Identifier

Source§

impl<'doc> ParseDocument<'doc> for &'doc PrimitiveValue

Source§

impl<'doc> ParseDocument<'doc> for &'doc NodeArray

Source§

impl<'doc, K, T> ParseDocument<'doc> for Map<K, T>
where K: ParseObjectKey<'doc>, T: ParseDocument<'doc>,