pub trait ReadFrom: Sized {
type ParseError: Error;
// Required method
fn try_read_from<F: Format, S: BufReadExt>(
stream: &mut S,
format: F,
) -> Result<Self, ReadFromError<Self>>;
// Provided methods
fn try_read_n_from<F: Format, S: BufReadExt>(
stream: &mut S,
n: usize,
format: F,
) -> Result<Vec<Self>, ReadFromError<Self>> { ... }
fn try_read_m_n_from<F: Format, S: BufReadExt>(
stream: &mut S,
m: usize,
n: usize,
format: F,
) -> Result<Mat<Self>, ReadFromError<Self>> { ... }
}Expand description
Read data from input stream.
§Errors
- If the input cannot be parsed into
T, ReadError::FromStrError is returned. - If the input is not valid UTF-8, ReadError::IOError is returned.
- If an I/O error occurs, ReadError::IOError is returned.
Required Associated Types§
Sourcetype ParseError: Error
type ParseError: Error
Errors that come from ReadOneFrom.
Required Methods§
Sourcefn try_read_from<F: Format, S: BufReadExt>(
stream: &mut S,
format: F,
) -> Result<Self, ReadFromError<Self>>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<Self, ReadFromError<Self>>
Read from self and parse into Self.
Provided Methods§
Sourcefn try_read_n_from<F: Format, S: BufReadExt>(
stream: &mut S,
n: usize,
format: F,
) -> Result<Vec<Self>, ReadFromError<Self>>
fn try_read_n_from<F: Format, S: BufReadExt>( stream: &mut S, n: usize, format: F, ) -> Result<Vec<Self>, ReadFromError<Self>>
Read n elements from self, parse into Self and aggregate them into a single Vec.
Sourcefn try_read_m_n_from<F: Format, S: BufReadExt>(
stream: &mut S,
m: usize,
n: usize,
format: F,
) -> Result<Mat<Self>, ReadFromError<Self>>
fn try_read_m_n_from<F: Format, S: BufReadExt>( stream: &mut S, m: usize, n: usize, format: F, ) -> Result<Mat<Self>, ReadFromError<Self>>
Read m * n elements from self, parse into Self and aggregate them into a single Mat.
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 ReadFrom for ()
impl ReadFrom for ()
type ParseError = Infallible
fn try_read_from<F: Format, S: BufReadExt>( _stream: &mut S, _format: F, ) -> Result<(), ReadFromError<Self>>
Source§impl<T1: ReadFrom> ReadFrom for (T1,)
impl<T1: ReadFrom> ReadFrom for (T1,)
type ParseError = Tuple1Error<<T1 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1,), ReadFromError<Self>>
Source§impl<T1: ReadFrom, T2: ReadFrom> ReadFrom for (T1, T2)
impl<T1: ReadFrom, T2: ReadFrom> ReadFrom for (T1, T2)
type ParseError = Tuple2Error<<T1 as ReadFrom>::ParseError, <T2 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1, T2), ReadFromError<Self>>
Source§impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom> ReadFrom for (T1, T2, T3)
impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom> ReadFrom for (T1, T2, T3)
type ParseError = Tuple3Error<<T1 as ReadFrom>::ParseError, <T2 as ReadFrom>::ParseError, <T3 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1, T2, T3), ReadFromError<Self>>
Source§impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom> ReadFrom for (T1, T2, T3, T4)
impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom> ReadFrom for (T1, T2, T3, T4)
type ParseError = Tuple4Error<<T1 as ReadFrom>::ParseError, <T2 as ReadFrom>::ParseError, <T3 as ReadFrom>::ParseError, <T4 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1, T2, T3, T4), ReadFromError<Self>>
Source§impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5)
impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5)
type ParseError = Tuple5Error<<T1 as ReadFrom>::ParseError, <T2 as ReadFrom>::ParseError, <T3 as ReadFrom>::ParseError, <T4 as ReadFrom>::ParseError, <T5 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1, T2, T3, T4, T5), ReadFromError<Self>>
Source§impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6)
impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6)
type ParseError = Tuple6Error<<T1 as ReadFrom>::ParseError, <T2 as ReadFrom>::ParseError, <T3 as ReadFrom>::ParseError, <T4 as ReadFrom>::ParseError, <T5 as ReadFrom>::ParseError, <T6 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1, T2, T3, T4, T5, T6), ReadFromError<Self>>
Source§impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7)
impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7)
type ParseError = Tuple7Error<<T1 as ReadFrom>::ParseError, <T2 as ReadFrom>::ParseError, <T3 as ReadFrom>::ParseError, <T4 as ReadFrom>::ParseError, <T5 as ReadFrom>::ParseError, <T6 as ReadFrom>::ParseError, <T7 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1, T2, T3, T4, T5, T6, T7), ReadFromError<Self>>
Source§impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom, T8: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7, T8)
impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom, T8: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7, T8)
type ParseError = Tuple8Error<<T1 as ReadFrom>::ParseError, <T2 as ReadFrom>::ParseError, <T3 as ReadFrom>::ParseError, <T4 as ReadFrom>::ParseError, <T5 as ReadFrom>::ParseError, <T6 as ReadFrom>::ParseError, <T7 as ReadFrom>::ParseError, <T8 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8), ReadFromError<Self>>
Source§impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom, T8: ReadFrom, T9: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7, T8, T9)
impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom, T8: ReadFrom, T9: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7, T8, T9)
type ParseError = Tuple9Error<<T1 as ReadFrom>::ParseError, <T2 as ReadFrom>::ParseError, <T3 as ReadFrom>::ParseError, <T4 as ReadFrom>::ParseError, <T5 as ReadFrom>::ParseError, <T6 as ReadFrom>::ParseError, <T7 as ReadFrom>::ParseError, <T8 as ReadFrom>::ParseError, <T9 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9), ReadFromError<Self>>
Source§impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom, T8: ReadFrom, T9: ReadFrom, T10: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom, T8: ReadFrom, T9: ReadFrom, T10: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
type ParseError = Tuple10Error<<T1 as ReadFrom>::ParseError, <T2 as ReadFrom>::ParseError, <T3 as ReadFrom>::ParseError, <T4 as ReadFrom>::ParseError, <T5 as ReadFrom>::ParseError, <T6 as ReadFrom>::ParseError, <T7 as ReadFrom>::ParseError, <T8 as ReadFrom>::ParseError, <T9 as ReadFrom>::ParseError, <T10 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10), ReadFromError<Self>>
Source§impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom, T8: ReadFrom, T9: ReadFrom, T10: ReadFrom, T11: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom, T8: ReadFrom, T9: ReadFrom, T10: ReadFrom, T11: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
type ParseError = Tuple11Error<<T1 as ReadFrom>::ParseError, <T2 as ReadFrom>::ParseError, <T3 as ReadFrom>::ParseError, <T4 as ReadFrom>::ParseError, <T5 as ReadFrom>::ParseError, <T6 as ReadFrom>::ParseError, <T7 as ReadFrom>::ParseError, <T8 as ReadFrom>::ParseError, <T9 as ReadFrom>::ParseError, <T10 as ReadFrom>::ParseError, <T11 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11), ReadFromError<Self>>
Source§impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom, T8: ReadFrom, T9: ReadFrom, T10: ReadFrom, T11: ReadFrom, T12: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
impl<T1: ReadFrom, T2: ReadFrom, T3: ReadFrom, T4: ReadFrom, T5: ReadFrom, T6: ReadFrom, T7: ReadFrom, T8: ReadFrom, T9: ReadFrom, T10: ReadFrom, T11: ReadFrom, T12: ReadFrom> ReadFrom for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
type ParseError = Tuple12Error<<T1 as ReadFrom>::ParseError, <T2 as ReadFrom>::ParseError, <T3 as ReadFrom>::ParseError, <T4 as ReadFrom>::ParseError, <T5 as ReadFrom>::ParseError, <T6 as ReadFrom>::ParseError, <T7 as ReadFrom>::ParseError, <T8 as ReadFrom>::ParseError, <T9 as ReadFrom>::ParseError, <T10 as ReadFrom>::ParseError, <T11 as ReadFrom>::ParseError, <T12 as ReadFrom>::ParseError>
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), ReadFromError<Self>>
Source§impl<T: ReadFrom, const N: usize> ReadFrom for [T; N]
impl<T: ReadFrom, const N: usize> ReadFrom for [T; N]
type ParseError = <T as ReadFrom>::ParseError
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<Self, ReadFromError<Self>>
Source§impl<T: ReadFrom, const N: usize> ReadFrom for Box<[T; N]>
impl<T: ReadFrom, const N: usize> ReadFrom for Box<[T; N]>
type ParseError = <T as ReadFrom>::ParseError
fn try_read_from<F: Format, S: BufReadExt>( stream: &mut S, format: F, ) -> Result<Box<[T; N]>, ReadFromError<Self>>
Implementors§
Source§impl<T: ReadOneFrom> ReadFrom for Vec<T>
Read several data items in a line from input stream.
impl<T: ReadOneFrom> ReadFrom for Vec<T>
Read several data items in a line from input stream.
Such as:
1 2 3