Skip to content

Instantly share code, notes, and snippets.

@jimmychu0807
Created November 21, 2019 10:20
Show Gist options
  • Save jimmychu0807/9a89355e642afad0d2aeda52e6ad2424 to your computer and use it in GitHub Desktop.
Save jimmychu0807/9a89355e642afad0d2aeda52e6ad2424 to your computer and use it in GitHub Desktop.

Revisions

  1. jimmychu0807 created this gist Nov 21, 2019.
    40 changes: 40 additions & 0 deletions string-conversion.rs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    use std::str;

    fn main() {
    // -- FROM: vec of chars --
    let src1: Vec<char> = vec!['j','{','"','i','m','m','y','"','}'];
    // to String
    let string1: String = src1.iter().collect::<String>();
    // to str
    let str1: &str = &src1.iter().collect::<String>();
    // to vec of byte
    let byte1: Vec<u8> = src1.iter().map(|c| *c as u8).collect::<Vec<_>>();
    println!("Vec<char>:{:?} | String:{:?}, str:{:?}, Vec<u8>:{:?}", src1, string1, str1, byte1);

    // -- FROM: vec of bytes --
    // in rust, this is a slice
    // b - byte, r - raw string, br - byte of raw string
    let src2: Vec<u8> = br#"e{"ddie"}"#.to_vec();
    // to String
    // from_utf8 consume the vector of bytes
    let string2: String = String::from_utf8(src2.clone()).unwrap();
    // to str
    let str2: &str = str::from_utf8(&src2).unwrap();
    // to vec of chars
    let char2: Vec<char> = src2.iter().map(|b| *b as char).collect::<Vec<_>>();
    println!("Vec<u8>:{:?} | String:{:?}, str:{:?}, Vec<char>:{:?}", src2, string2, str2, char2);

    // -- FROM: String --
    let src3: String = String::from(r#"o{"livia"}"#);
    let str3: &str = &src3;
    let char3: Vec<char> = src3.chars().collect::<Vec<_>>();
    let byte3: Vec<u8> = src3.as_bytes().to_vec();
    println!("String:{:?} | str:{:?}, Vec<char>:{:?}, Vec<u8>:{:?}", src3, str3, char3, byte3);

    // -- FROM: str --
    let src4: &str = r#"g{'race'}"#;
    let string4 = String::from(src4);
    let char4: Vec<char> = src4.chars().collect();
    let byte4: Vec<u8> = src4.as_bytes().to_vec();
    println!("str:{:?} | String:{:?}, Vec<char>:{:?}, Vec<u8>:{:?}", src4, string4, char4, byte4);
    }