-
-
Save ltfschoen/16c61a33e85688c9474ff56cc25f1e2c to your computer and use it in GitHub Desktop.
Conversion between String, str, Vec<u8>, Vec<char> in Rust
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment