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
13impl_read_one_from_for_from_str!(
15 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}