HiveBrain v1.2.0
Get Started
← Back to all entries
gotcharustCritical

What is the difference between these 3 ways of declaring a string in Rust?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
declaringbetweenthedifferencewaysruststringwhatthese

Problem

let hello1 = "Hello, world!";
let hello2 = "Hello, world!".to_string();
let hello3 = String::from("Hello, world!");

Solution

let hello1 = "Hello, world!";


This creates a string slice (&str). Specifically, a &'static str, a string slice that lives for the entire duration of the program. No heap memory is allocated; the data for the string lives within the binary of the program itself.

let hello2 = "Hello, world!".to_string();


This uses the formatting machinery to format any type that implements Display, creating an owned, allocated string (String). In versions of Rust before 1.9.0 (specifically because of this commit), this is slower than directly converting using String::from. In version 1.9.0 and after, calling .to_string() on a string literal is the same speed as String::from.

let hello3 = String::from("Hello, world!");


This converts a string slice to an owned, allocated string (String) in an efficient manner.

let hello4 = "hello, world!".to_owned();


The same as String::from.

See also:

  • How to create a String directly?



  • What are the differences between Rust's String and str?

Code Snippets

let hello1 = "Hello, world!";
let hello2 = "Hello, world!".to_string();
let hello3 = String::from("Hello, world!");
let hello4 = "hello, world!".to_owned();

Context

Stack Overflow Q#37149831, score: 108

Revisions (0)

No revisions yet.