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