Convert from &str to i32


#1

As the title states, how exactly do I convert from a &str to an i32? I see that i32 implements the from_str() function, but I’m not exactly sure how to use it. Any advice?


#2

You want parse.

Example: http://is.gd/V8ZcEb


#3

To directly answer your question though, this is how you’d use FromStr:

use std::str::FromStr;

fn main() {
    let n: u32 = FromStr::from_str("42").unwrap();
    println!("{}", n);
}

#4

Thank you for your replies! Is there one solution to this problem that’s “better” in any case? Or whichever I choose is fine?


#5

parse seems to be the prevailing choice by thoughtful programmers. My guess is because:

  1. It’s shorter.
  2. Doesn’t require a use to bring a trait into scope.
  3. Can have type hints inlined, e.g., parse::<i32>(). FromStr::from_str can’t do that, although I think type ascriptions might negate this benefit. (I can’t remember if type ascriptions was rejected or if it just hasn’t been implemented yet.)

#6

Off the top of my head: <i32 as FromStr>::from_str("42") should do it.