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§
Required Methods§
Sourcefn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>
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
impl ParseDocument<'_> for bool
type Error = ParseError
fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>
Source§impl ParseDocument<'_> for f32
impl ParseDocument<'_> for f32
type Error = ParseError
fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>
Source§impl ParseDocument<'_> for f64
impl ParseDocument<'_> for f64
type Error = ParseError
fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>
Source§impl ParseDocument<'_> for i32
impl ParseDocument<'_> for i32
type Error = ParseError
fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>
Source§impl ParseDocument<'_> for i64
impl ParseDocument<'_> for i64
type Error = ParseError
fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>
Source§impl ParseDocument<'_> for u32
impl ParseDocument<'_> for u32
type Error = ParseError
fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>
Source§impl ParseDocument<'_> for u64
impl ParseDocument<'_> for u64
type Error = ParseError
fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>
Source§impl ParseDocument<'_> for usize
impl ParseDocument<'_> for usize
type Error = ParseError
fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>
Source§impl ParseDocument<'_> for String
impl ParseDocument<'_> for String
type Error = ParseError
fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>
Source§impl ParseDocument<'_> for BigInt
impl ParseDocument<'_> for BigInt
type Error = ParseError
fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>
Source§impl ParseDocument<'_> for Regex
impl ParseDocument<'_> for Regex
type Error = ParseError
fn parse(ctx: &ParseContext<'_>) -> Result<Self, Self::Error>
Source§impl<'doc> ParseDocument<'doc> for &'doc str
impl<'doc> ParseDocument<'doc> for &'doc str
type Error = ParseError
fn parse(ctx: &ParseContext<'doc>) -> Result<Self, Self::Error>
Source§impl<'doc> ParseDocument<'doc> for ()
impl<'doc> ParseDocument<'doc> for ()
type Error = ParseError
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>,
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§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>,
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§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>,
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§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>,
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§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>,
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§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>,
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§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>,
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§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>,
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§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>,
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§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>,
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§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>,
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§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>,
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§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>,
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§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>,
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§impl<'doc, A, B, Err> ParseDocument<'doc> for (A, B)where
A: ParseDocument<'doc, Error = Err>,
B: ParseDocument<'doc, Error = Err>,
Err: From<ParseError>,
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§impl<'doc, A, Err> ParseDocument<'doc> for (A,)
impl<'doc, A, Err> ParseDocument<'doc> for (A,)
Source§impl<'doc, K, T> ParseDocument<'doc> for BTreeMap<K, T>
impl<'doc, K, T> ParseDocument<'doc> for BTreeMap<K, T>
Source§impl<'doc, K, T> ParseDocument<'doc> for HashMap<K, T>
impl<'doc, K, T> ParseDocument<'doc> for HashMap<K, T>
Source§impl<'doc, K, T> ParseDocument<'doc> for IndexMap<K, T>
impl<'doc, K, T> ParseDocument<'doc> for IndexMap<K, T>
Source§impl<'doc, T> ParseDocument<'doc> for Option<T>
Option<T> is a union with variants some and none.
impl<'doc, T> ParseDocument<'doc> for Option<T>
Option<T> is a union with variants some and none.
$variant: some-> parse T$variant: none-> None- No
$variantand value is null -> None - No
$variantand value is not null -> try parsing as T (Some)
Source§impl<'doc, T> ParseDocument<'doc> for Vec<T>
impl<'doc, T> ParseDocument<'doc> for Vec<T>
Source§impl<'doc, T> ParseDocument<'doc> for IndexSet<T>
impl<'doc, T> ParseDocument<'doc> for IndexSet<T>
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.
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)