Skip to main content

FromEure

Trait FromEure 

Source
pub trait FromEure<'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> FromEure<'doc> for &'doc str { ... }

// Owned type - no lifetime dependency
impl FromEure<'_> 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 FromEure<'_> for ParsedSchemaNodeContent

Source§

impl FromEure<'_> for ParsedUnknownFieldsPolicy

Source§

impl FromEure<'_> for bool

Source§

impl FromEure<'_> for f32

Source§

impl FromEure<'_> for f64

Source§

impl FromEure<'_> for i32

Source§

impl FromEure<'_> for i64

Source§

impl FromEure<'_> for u32

Source§

impl FromEure<'_> for u64

Source§

impl FromEure<'_> for usize

Source§

impl FromEure<'_> for String

Source§

impl FromEure<'_> for EureConfig

Source§

impl FromEure<'_> for ParsedRecordSchema

Source§

impl FromEure<'_> for ParsedSchemaNode

Source§

impl FromEure<'_> for ParsedUnionSchema

Source§

impl FromEure<'_> for SchemaRef

Source§

impl FromEure<'_> for TypeReference

Source§

impl FromEure<'_> for BigInt

Source§

impl FromEure<'_> for Regex

Source§

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

Source§

type Error = ParseError

Source§

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

Source§

impl<'doc> FromEure<'doc> for BindingStyle

Source§

impl<'doc> FromEure<'doc> for Description

Source§

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

Source§

impl<'doc> FromEure<'doc> for SecurityConfig

Source§

impl<'doc> FromEure<'doc> for Target

Source§

impl<'doc> FromEure<'doc> for ParsedArraySchema

Source§

impl<'doc> FromEure<'doc> for ParsedExtTypeSchema

Source§

impl<'doc> FromEure<'doc> for ParsedFloatSchema

Source§

impl<'doc> FromEure<'doc> for ParsedIntegerSchema

Source§

impl<'doc> FromEure<'doc> for ParsedMapSchema

Source§

impl<'doc> FromEure<'doc> for ParsedRecordFieldSchema

Source§

impl<'doc> FromEure<'doc> for ParsedTupleSchema

Source§

impl<'doc> FromEure<'doc> for TextSchema

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

type Error = Err

Source§

fn parse( ctx: &ParseContext<'doc>, ) -> Result<(A, B, C), <(A, B, C) as FromEure<'doc>>::Error>

Source§

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

Source§

type Error = Err

Source§

fn parse( ctx: &ParseContext<'doc>, ) -> Result<(A, B), <(A, B) as FromEure<'doc>>::Error>

Source§

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

Source§

type Error = Err

Source§

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

Source§

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

Source§

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

Source§

fn parse( ctx: &ParseContext<'doc>, ) -> Result<BTreeMap<K, T>, <BTreeMap<K, T> as FromEure<'doc>>::Error>

Source§

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

Source§

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

Source§

fn parse( ctx: &ParseContext<'doc>, ) -> Result<HashMap<K, T>, <HashMap<K, T> as FromEure<'doc>>::Error>

Source§

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

Source§

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

Source§

fn parse( ctx: &ParseContext<'doc>, ) -> Result<IndexMap<K, T>, <IndexMap<K, T> as FromEure<'doc>>::Error>

Source§

impl<'doc, T> FromEure<'doc> for Option<T>
where T: FromEure<'doc>, <T as FromEure<'doc>>::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 FromEure<'doc>>::Error

Source§

fn parse( ctx: &ParseContext<'doc>, ) -> Result<Option<T>, <Option<T> as FromEure<'doc>>::Error>

Source§

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

Source§

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

Source§

fn parse( ctx: &ParseContext<'doc>, ) -> Result<Vec<T>, <Vec<T> as FromEure<'doc>>::Error>

Source§

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

Source§

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

Source§

fn parse( ctx: &ParseContext<'doc>, ) -> Result<IndexSet<T>, <IndexSet<T> as FromEure<'doc>>::Error>

Source§

impl<'doc, T, E, Err> FromEure<'doc> for Result<T, E>
where T: FromEure<'doc, Error = Err>, E: FromEure<'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<Result<T, E>, <Result<T, E> as FromEure<'doc>>::Error>

Implementors§