ParseDocument

Trait ParseDocument 

Source
pub trait ParseDocument<'doc>: Sized {
    type Error;

    // Required method
    fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>;
}
Expand description

Trait for parsing Rust types from Eure documents.

Types implementing this trait can be constructed from EureDocument via ParseContext.

§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 Associated Types§

Source

type Error

The error type returned by parsing.

Required Methods§

Source

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Parse a value of this type from the given parse context.

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§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>

Source§

impl ParseDocument<'_> for f32

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>

Source§

impl ParseDocument<'_> for f64

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>

Source§

impl ParseDocument<'_> for i32

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>

Source§

impl ParseDocument<'_> for i64

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>

Source§

impl ParseDocument<'_> for u32

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>

Source§

impl ParseDocument<'_> for u64

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>

Source§

impl ParseDocument<'_> for usize

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>

Source§

impl ParseDocument<'_> for String

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>

Source§

impl ParseDocument<'_> for BigInt

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>

Source§

impl ParseDocument<'_> for Regex

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>

Source§

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

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc> ParseDocument<'doc> for ()

Source§

type Error = ParseError

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, B, C, D, E, Err> ParseDocument<'doc> for (A, B, C, D, E)
where A: ParseDocument<'doc, Error = Err>, B: ParseDocument<'doc, Error = Err>, C: ParseDocument<'doc, Error = Err>, D: ParseDocument<'doc, Error = Err>, E: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, B, C, D, E, F, Err> ParseDocument<'doc> for (A, B, C, D, E, F)
where A: ParseDocument<'doc, Error = Err>, B: ParseDocument<'doc, Error = Err>, C: ParseDocument<'doc, Error = Err>, D: ParseDocument<'doc, Error = Err>, E: ParseDocument<'doc, Error = Err>, F: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, B, C, D, E, F, G, Err> ParseDocument<'doc> for (A, B, C, D, E, F, G)
where A: ParseDocument<'doc, Error = Err>, B: ParseDocument<'doc, Error = Err>, C: ParseDocument<'doc, Error = Err>, D: ParseDocument<'doc, Error = Err>, E: ParseDocument<'doc, Error = Err>, F: ParseDocument<'doc, Error = Err>, G: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, B, C, D, E, F, G, H, Err> ParseDocument<'doc> for (A, B, C, D, E, F, G, H)
where A: ParseDocument<'doc, Error = Err>, B: ParseDocument<'doc, Error = Err>, C: ParseDocument<'doc, Error = Err>, D: ParseDocument<'doc, Error = Err>, E: ParseDocument<'doc, Error = Err>, F: ParseDocument<'doc, Error = Err>, G: ParseDocument<'doc, Error = Err>, H: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, B, C, D, E, F, G, H, I, Err> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I)
where A: ParseDocument<'doc, Error = Err>, B: ParseDocument<'doc, Error = Err>, C: ParseDocument<'doc, Error = Err>, D: ParseDocument<'doc, Error = Err>, E: ParseDocument<'doc, Error = Err>, F: ParseDocument<'doc, Error = Err>, G: ParseDocument<'doc, Error = Err>, H: ParseDocument<'doc, Error = Err>, I: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, B, C, D, E, F, G, H, I, J, Err> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I, J)
where A: ParseDocument<'doc, Error = Err>, B: ParseDocument<'doc, Error = Err>, C: ParseDocument<'doc, Error = Err>, D: ParseDocument<'doc, Error = Err>, E: ParseDocument<'doc, Error = Err>, F: ParseDocument<'doc, Error = Err>, G: ParseDocument<'doc, Error = Err>, H: ParseDocument<'doc, Error = Err>, I: ParseDocument<'doc, Error = Err>, J: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, B, C, D, E, F, G, H, I, J, K, Err> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I, J, K)
where A: ParseDocument<'doc, Error = Err>, B: ParseDocument<'doc, Error = Err>, C: ParseDocument<'doc, Error = Err>, D: ParseDocument<'doc, Error = Err>, E: ParseDocument<'doc, Error = Err>, F: ParseDocument<'doc, Error = Err>, G: ParseDocument<'doc, Error = Err>, H: ParseDocument<'doc, Error = Err>, I: ParseDocument<'doc, Error = Err>, J: ParseDocument<'doc, Error = Err>, K: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, B, C, D, E, F, G, H, I, J, K, L, Err> ParseDocument<'doc> for (A, B, C, D, E, F, G, H, I, J, K, L)
where A: ParseDocument<'doc, Error = Err>, B: ParseDocument<'doc, Error = Err>, C: ParseDocument<'doc, Error = Err>, D: ParseDocument<'doc, Error = Err>, E: ParseDocument<'doc, Error = Err>, F: ParseDocument<'doc, Error = Err>, G: ParseDocument<'doc, Error = Err>, H: ParseDocument<'doc, Error = Err>, I: ParseDocument<'doc, Error = Err>, J: ParseDocument<'doc, Error = Err>, K: ParseDocument<'doc, Error = Err>, L: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

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

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

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

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

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

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

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

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, B, C, D, Err> ParseDocument<'doc> for (A, B, C, D)
where A: ParseDocument<'doc, Error = Err>, B: ParseDocument<'doc, Error = Err>, C: ParseDocument<'doc, Error = Err>, D: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, B, C, Err> ParseDocument<'doc> for (A, B, C)
where A: ParseDocument<'doc, Error = Err>, B: ParseDocument<'doc, Error = Err>, C: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, B, Err> ParseDocument<'doc> for (A, B)
where A: ParseDocument<'doc, Error = Err>, B: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, A, Err> ParseDocument<'doc> for (A,)
where A: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, K, T> ParseDocument<'doc> for BTreeMap<K, T>
where K: ParseObjectKey<'doc>, T: ParseDocument<'doc>, T::Error: From<ParseError>,

Source§

type Error = <T as ParseDocument<'doc>>::Error

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, K, T> ParseDocument<'doc> for HashMap<K, T>
where K: ParseObjectKey<'doc>, T: ParseDocument<'doc>, T::Error: From<ParseError>,

Source§

type Error = <T as ParseDocument<'doc>>::Error

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, K, T> ParseDocument<'doc> for IndexMap<K, T>
where K: ParseObjectKey<'doc>, T: ParseDocument<'doc>, T::Error: From<ParseError>,

Source§

type Error = <T as ParseDocument<'doc>>::Error

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, T> ParseDocument<'doc> for Option<T>
where T: ParseDocument<'doc>, T::Error: From<ParseError>,

Option<T> is a union with variants some and none.

  • $variant: some -> parse T
  • $variant: none -> None
  • No $variant and value is null -> None
  • No $variant and value is not null -> try parsing as T (Some)
Source§

type Error = <T as ParseDocument<'doc>>::Error

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

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

Source§

type Error = <T as ParseDocument<'doc>>::Error

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, T> ParseDocument<'doc> for IndexSet<T>
where T: ParseDocument<'doc> + Eq + Hash, T::Error: From<ParseError>,

Source§

type Error = <T as ParseDocument<'doc>>::Error

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Source§

impl<'doc, T, E, Err> ParseDocument<'doc> for Result<T, E>
where T: ParseDocument<'doc, Error = Err>, E: ParseDocument<'doc, Error = Err>, Err: From<ParseError>,

Result<T, E> is a union with variants ok and err.

  • $variant: ok -> parse T as Ok
  • $variant: err -> parse E as Err
  • No $variant -> try Ok first, then Err (priority-based)
Source§

type Error = Err

Source§

fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>

Implementors§