wiki/content/20200915151358-strings.md

2.5 KiB
Raw Blame History

id title
490f0710-971d-4150-a339-4a8c2f5d19a8 Rust Strings

Description

The String type, which is provided by Rusts standard library rather than coded into the core language, is a growable, mutable, owned, UTF-8 encoded string type. When Rustaceans refer to “strings” in Rust, they usually mean the String and the string slice &str types, not just one of those types. Although this section is largely about String, both types are used heavily in Rusts standard library, and both String and string slices are UTF-8 encoded.

Creating a New String

Many Vector operations are also available for Strings.

fn main() {
    let mut s = String::new();
}

tostring

To generate a String with initial data we can use the tostring method:

fn main() {
    let data = "initial contents";

    let s = data.to_string();

    // the method also works on a literal directly:
    let s = "initial contents".to_string();
}

String::from

The same can be accomplished with String::from:

fn main() {
    let s = String::from("initial contents");
}

Updating a String

pushstr

fn main() {
    let mut s = String::from("foo");
    s.push_str("bar");

    println!("s is {}", s)
}

push

push adds a single character to a string:

fn main() {
    let mut s = String::from("lo");
    s.push('l');

    println!("s is {}", s)
}

Concatentation

fn main() {
    let s1 = String::from("Hello, ");
    let s2 = String::from("world!");
    let s3 = s1 + &s2; // note s1 has been moved here and can no longer be used

    println!("s3 is {}", s3)
}

Concatenate multiple strings

With +

fn main() {
    let s1 = String::from("tic");
    let s2 = String::from("tac");
    let s3 = String::from("toe");

    let s = s1 + "-" + &s2 + "-" + &s3;

    println!("s is {}", s)
}

With format!

fn main() {
    let s1 = String::from("tic");
    let s2 = String::from("tac");
    let s3 = String::from("toe");

    let s = format!("{}-{}-{}", s1, s2, s3);

    println!("s is {}", s)
}

Iteration

Chars

#![allow(unused)]
fn main() {
    for c in "नमस्ते".chars() {
        println!("{}", c);
    }
}

Bytes

#![allow(unused)]
fn main() {
    for b in "नमस्ते".bytes() {
        println!("{}", b);
    }
}