Rust 里 String,str,Vec ,Vec 相互轉換【Conversion between String, str, Vec , Vec in Rust】


Rust 里 String 如何轉換為 &str
Rust 里 String 如何轉換為 Vec
Rust 里 String 如何轉換為 Vec
或其他相互轉換,請看:

use std::str;

fn main() {
// 起始:Vec
let src1: Vec<char> = vec!['j','{','"','i','m','m','y','"','}'];
// 從 Vec 轉換為String
let string1: String = src1.iter().collect::<String>();
// 從 Vec 轉換為&str
let str1: &str = &src1.iter().collect::<String>();
// 從 Vec 轉換為Vec
let byte1: Vec<u8> = src1.iter().map(|c| *c as u8).collect::<Vec<_>>();
//輸出
println!("Vec<char>:{:?} | String:{:?}, str:{:?}, Vec<u8>:{:?}", src1, string1, str1, byte1);

// 起始:Vec 字節數組
// 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();
// 從 Vec 轉換為String
// from_utf8 以utf8方式轉換
let string2: String = String::from_utf8(src2.clone()).unwrap();
// 從 Vec 轉換為 &str
let str2: &str = str::from_utf8(&src2).unwrap();
// 從 Vec 轉換為Vec
let char2: Vec<char> = src2.iter().map(|b| *b as char).collect::<Vec<_>>();
//輸出
println!("Vec<u8>:{:?} | String:{:?}, str:{:?}, Vec<char>:{:?}", src2, string2, str2, char2);

// 起始為一個 String
let src3: String = String::from(r#"o{"livia"}"#);
// 直接變為一個&str
let str3: &str = &src3;
// 從 String 轉換為Vec
let char3: Vec<char> = src3.chars().collect::<Vec<_>>();
// 從String轉換為Vec
let byte3: Vec<u8> = src3.as_bytes().to_vec();
//Print
println!("String:{:?} | str:{:?}, Vec<char>:{:?}, Vec<u8>:{:?}", src3, str3, char3, byte3);

// 起點為 &str
let src4: &str = r#"g{'race'}"#;
// 從&str轉換為String
let string4 = String::from(src4);
//從&str 轉換為 Vech
let char4: Vec<char> = src4.chars().collect();
// 從 &str 轉換為 Vec
let byte4: Vec<u8> = src4.as_bytes().to_vec();
//輸出
println!("str:{:?} | String:{:?}, Vec<char>:{:?}, Vec<u8>:{:?}", src4, string4, char4, byte4);
}

參考:
https://gist.github.com/jimmychu0807/9a89355e642afad0d2aeda52e6ad2424


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM