How do I convert from an integer to a string?

129,621

Use to_string() (running example here):

let x: u32 = 10;
let s: String = x.to_string();
println!("{}", s);

You're right; to_str() was renamed to to_string() before Rust 1.0 was released for consistency because an allocated string is now called String.

If you need to pass a string slice somewhere, you need to obtain a &str reference from String. This can be done using & and a deref coercion:

let ss: &str = &s;   // specifying type is necessary for deref coercion to fire
let ss = &s[..];     // alternatively, use slicing syntax

The tutorial you linked to seems to be obsolete. If you're interested in strings in Rust, you can look through the strings chapter of The Rust Programming Language.

Share:
129,621
user3358302
Author by

user3358302

Updated on December 15, 2020

Comments

  • user3358302
    user3358302 over 3 years

    I am unable to compile code that converts a type from an integer to a string. I'm running an example from the Rust for Rubyists tutorial which has various type conversions such as:

    "Fizz".to_str() and num.to_str() (where num is an integer).

    I think the majority (if not all) of these to_str() function calls have been deprecated. What is the current way to convert an integer to a string?

    The errors I'm getting are:

    error: type `&'static str` does not implement any method in scope named `to_str`
    error: type `int` does not implement any method in scope named `to_str`
    
    • user3358302
      user3358302 almost 10 years
      sorry if I don't follow but i've tried looking up the int source and it seems to use doc.rust-lang.org/0.11.0/std/num/strconv/index.html but this just returns a byte vector. In addition there is the to_string() method but that returns String and not a literal string.
    • user3358302
      user3358302 almost 10 years
      haha nevermind, I thought to_str() was a different return value, I'll use to_string()
    • Vladimir Matveev
      Vladimir Matveev almost 10 years
      @user3358302, no method can return a thing you call "literal string" unless they do return statically known literals because these values have type &'static str, that is, a string slice with a static lifetime, which is impossible to obtain using dynamically created data. You can only create them using string literals.
    • user3358302
      user3358302 almost 10 years
      good to know! I think the method to_str confused me (which as you said, they renamed for clarity) thinking it was returning a string slice instead of a String object.
  • user3358302
    user3358302 almost 10 years
    Thanks a lot man, this clears things up :) Also i'll go through that tutorial since string conversion seems like something that's still changing on rust.