-
-
Save jimmychu0807/9a89355e642afad0d2aeda52e6ad2424 to your computer and use it in GitHub Desktop.
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); | |
} |
Thank you so much, saved a long night's work!
very useful, Thank you !
Brilliant!
arigato
Great. Thank you.
@jimmychu0807 Line 11 & 24: multibyte characters are not supported?
Lovely. Thanks.
hello, based department?
My favourite about Rust would be transforming String
using let char3: Vec<char> = src3.chars().collect::<Vec<_>>();
into Vec<char>
, it makes so much sense!
Just found that an alternative way of converting String to Vec is this String::into_bytes()
.
pub fn into_bytes(self) -> Vec<u8, Global> ⓘ
Converts a String into a byte vector.
This consumes the String, so we do not need to copy its contents.
awesome, thanks!
@jimmychu0807 thank you my friend :)
Are you god?
Thanks, super useful collection of examples!
thank you dear sir !
let byte1: Vec = src1.iter().map(|c| *c as u8).collect::<Vec<_>>();
This won't work for multi-byte characters (like '你', '漢', '😊', 'م', 'Ω'
).
let byte1: Vec = src1.iter().map(|c| *c as u8).collect::<Vec<_>>();
This won't work for multi-byte characters (like
'你', '漢', '😊', 'م', 'Ω'
).
That's what I'm worrying about
Thank you so much.
This helped me a lot