iof/read/
impls.rs

1use super::fmt;
2use crate::{
3    impl_read_one_from_for_from_str, ASCIIChar, ASCIIString, BufReadExt, ReadError, ReadOneFrom,
4    ReadOneFromError,
5};
6use std::{ffi::OsString, net::*, path::PathBuf};
7
8mod bool;
9mod float;
10mod signed;
11mod unsigned;
12
13// Implement `Parse` for some built-in types.
14impl_read_one_from_for_from_str!(
15    /* char ASCIIChar */
16    String
17    ASCIIString
18    PathBuf
19    OsString
20
21    IpAddr Ipv4Addr Ipv6Addr
22    SocketAddr SocketAddrV4 SocketAddrV6
23);
24
25impl ReadOneFrom for char {
26    type ParseError = <char as ::std::str::FromStr>::Err;
27
28    #[inline]
29    fn parse(s: &str) -> Result<Self, ReadOneFromError<Self>> {
30        s.parse().map_err(|err| {
31            ReadError::FromStrError(err, s.to_owned(), ::std::any::type_name::<Self>())
32        })
33    }
34
35    #[inline]
36    fn try_read_one_from<F: fmt::Format, S: BufReadExt>(
37        stream: &mut S,
38        format: F,
39    ) -> Result<Self, ReadOneFromError<Self>> {
40        <Self as ReadOneFrom>::try_read_in_char_from(stream, format)
41    }
42}
43
44impl ReadOneFrom for ASCIIChar {
45    type ParseError = <Self as ::std::str::FromStr>::Err;
46
47    #[inline]
48    fn parse(s: &str) -> Result<Self, ReadOneFromError<Self>> {
49        s.parse().map_err(|err| {
50            ReadError::FromStrError(err, s.to_owned(), ::std::any::type_name::<char>())
51        })
52    }
53
54    #[inline]
55    fn try_read_one_from<F: fmt::Format, S: BufReadExt>(
56        stream: &mut S,
57        format: F,
58    ) -> Result<Self, ReadOneFromError<Self>> {
59        <Self as ReadOneFrom>::try_read_in_char_from(stream, format)
60    }
61}