std::str::FromStr - Rust (original) (raw)
Trait std::str::FromStr1.0.0 [โ] [src]
pub trait FromStr { type Err; fn from_str(s: &str) -> Result<Self, Self::Err>; }
A trait to abstract the idea of creating a new instance of a type from a string.
FromStr
's from_str method is often used implicitly, throughstr's parse method. See parse's documentation for examples.
Basic implementation of FromStr
on an example Point
type:
use std::str::FromStr; use std::num::ParseIntError;
#[derive(Debug, PartialEq)] struct Point { x: i32, y: i32 }
impl FromStr for Point { type Err = ParseIntError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
let coords: Vec<&str> = s.trim_matches(|p| p == '(' || p == ')' )
.split(",")
.collect();
let x_fromstr = coords[0].parse::<i32>()?;
let y_fromstr = coords[1].parse::<i32>()?;
Ok(Point { x: x_fromstr, y: y_fromstr })
}
}
let p = Point::from_str("(1,2)"); assert_eq!(p.unwrap(), Point{ x: 1, y: 2} )Run
type [Err](#associatedtype.Err)
The associated error which can be returned from parsing.
fn [from_str](#tymethod.from%5Fstr)(s: &[str](../primitive.str.html)) -> [Result](../../std/result/enum.Result.html "enum std::result::Result")<Self, Self::[Err](../../std/str/trait.FromStr.html#associatedtype.Err "type std::str::FromStr::Err")>
Parses a string s
to return a value of this type.
If parsing succeeds, return the value inside Ok, otherwise when the string is ill-formatted return an error specific to the inside Err. The error type is specific to implementation of the trait.
Basic usage with i32, a type that implements FromStr
:
use std::str::FromStr;
let s = "5"; let x = i32::from_str(s).unwrap();
assert_eq!(5, x);Run
impl FromStr for [i32](../primitive.i32.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [i128](../primitive.i128.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [bool](../primitive.bool.html) type [Err](#associatedtype.Err) = [ParseBoolError](../../std/str/struct.ParseBoolError.html "struct std::str::ParseBoolError");
impl FromStr for [u16](../primitive.u16.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [f32](../primitive.f32.html) type [Err](#associatedtype.Err) = [ParseFloatError](../../std/num/struct.ParseFloatError.html "struct std::num::ParseFloatError");
impl FromStr for [i8](../primitive.i8.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [u32](../primitive.u32.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [u8](../primitive.u8.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [i64](../primitive.i64.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [u64](../primitive.u64.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [f64](../primitive.f64.html) type [Err](#associatedtype.Err) = [ParseFloatError](../../std/num/struct.ParseFloatError.html "struct std::num::ParseFloatError");
impl FromStr for [usize](../primitive.usize.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [i16](../primitive.i16.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [isize](../primitive.isize.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [u128](../primitive.u128.html) type [Err](#associatedtype.Err) = [ParseIntError](../../std/num/struct.ParseIntError.html "struct std::num::ParseIntError");
impl FromStr for [char](../primitive.char.html) type [Err](#associatedtype.Err) = [ParseCharError](../../std/char/struct.ParseCharError.html "struct std::char::ParseCharError");
impl FromStr for [String](../../std/string/struct.String.html "struct std:๐งต:String") type [Err](#associatedtype.Err) = [ParseError](../../std/string/enum.ParseError.html "enum std:๐งต:ParseError");
impl FromStr for [IpAddr](../../std/net/enum.IpAddr.html "enum std:๐ฅ :IpAddr") type [Err](#associatedtype.Err) = [AddrParseError](../../std/net/struct.AddrParseError.html "struct std:๐ฅ :AddrParseError");
impl FromStr for [Ipv4Addr](../../std/net/struct.Ipv4Addr.html "struct std:๐ฅ :Ipv4Addr") type [Err](#associatedtype.Err) = [AddrParseError](../../std/net/struct.AddrParseError.html "struct std:๐ฅ :AddrParseError");
impl FromStr for [Ipv6Addr](../../std/net/struct.Ipv6Addr.html "struct std:๐ฅ :Ipv6Addr") type [Err](#associatedtype.Err) = [AddrParseError](../../std/net/struct.AddrParseError.html "struct std:๐ฅ :AddrParseError");
impl FromStr for [SocketAddrV4](../../std/net/struct.SocketAddrV4.html "struct std:๐ฅ :SocketAddrV4") type [Err](#associatedtype.Err) = [AddrParseError](../../std/net/struct.AddrParseError.html "struct std:๐ฅ :AddrParseError");
impl FromStr for [SocketAddrV6](../../std/net/struct.SocketAddrV6.html "struct std:๐ฅ :SocketAddrV6") type [Err](#associatedtype.Err) = [AddrParseError](../../std/net/struct.AddrParseError.html "struct std:๐ฅ :AddrParseError");
impl FromStr for [SocketAddr](../../std/net/enum.SocketAddr.html "enum std:๐ฅ :SocketAddr") type [Err](#associatedtype.Err) = [AddrParseError](../../std/net/struct.AddrParseError.html "struct std:๐ฅ :AddrParseError");