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, through
str'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} )
The associated error which can be returned from parsing.
Loading content...
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);
Loading content...
impl FromStr for bool | [src] |
Parse a bool from a string.
Yields a Result<bool, ParseBoolError>, because s may or may not
actually be parseable.
use std::str::FromStr;
assert_eq!(FromStr::from_str("true"), Ok(true));
assert_eq!(FromStr::from_str("false"), Ok(false));
assert!(<bool as FromStr>::from_str("not even a boolean").is_err());
Note, in many cases, the .parse() method on str is more proper.
assert_eq!("true".parse(), Ok(true));
assert_eq!("false".parse(), Ok(false));
assert!("not even a boolean".parse::<bool>().is_err());
impl FromStr for char | [src] |
impl FromStr for f32 | [src] |
Converts a string in base 10 to a float.
Accepts an optional decimal exponent.
This function accepts strings such as
- '3.14'
- '-3.14'
- '2.5E10', or equivalently, '2.5e10'
- '2.5E-10'
- '5.'
- '.5', or, equivalently, '0.5'
- 'inf', '-inf', 'NaN'
Leading and trailing whitespace represent an error.
Err(ParseFloatError) if the string did not represent a valid
number. Otherwise, Ok(n) where n is the floating-point
number represented by src.
impl FromStr for f64 | [src] |
Converts a string in base 10 to a float.
Accepts an optional decimal exponent.
This function accepts strings such as
- '3.14'
- '-3.14'
- '2.5E10', or equivalently, '2.5e10'
- '2.5E-10'
- '5.'
- '.5', or, equivalently, '0.5'
- 'inf', '-inf', 'NaN'
Leading and trailing whitespace represent an error.
Err(ParseFloatError) if the string did not represent a valid
number. Otherwise, Ok(n) where n is the floating-point
number represented by src.
impl FromStr for i16 | [src] |
impl FromStr for i32 | [src] |
impl FromStr for i64 | [src] |
impl FromStr for i128 | [src] |
impl FromStr for isize | [src] |
impl FromStr for u16 | [src] |
impl FromStr for u32 | [src] |
impl FromStr for u64 | [src] |
impl FromStr for u128 | [src] |
impl FromStr for usize | [src] |
Loading content...