加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 学习资料

rust中String,&str,Vec <u8>和&[u8]的惯用转换

时间:2023-02-27 16:36:24  来源:原创  作者:站长
from to 函数
&str String String::from(s) 或 s.to_string() 或 s.to_owned()
&str &[u8] s.as_bytes()
&str Vec<u8> s.as_bytes().to_vec()
String &[u8] s.as_bytes()
String &str s.as_str() 或 &s
String Vec<u8> s.into_bytes()
&[u8] &str std::str::from_utf8(s).unwrap()
&[u8] String String::from_utf8(s).unwrap()
&[u8] Vec<u8> s.to_vec()
Vec<u8> &str std::str::from_utf8(&s).unwrap()
Vec<u8> String String::from_utf8(&s).unwrap()
Vec<u8> &[u8] &s 或 s.as_slice()

修正下面表格KcW华陈数据科技
KcW华陈数据科技
&str -> String--| String::from(s) or s.to_string() or s.to_owned()KcW华陈数据科技
&str -> &[u8]---| s.as_bytes()KcW华陈数据科技
&str -> Vec<u8>-| s.as_bytes().to_vec() or s.as_bytes().to_owned()KcW华陈数据科技
String -> &str----| &s if possible* else s.as_str()KcW华陈数据科技
String -> &[u8]---| s.as_bytes()KcW华陈数据科技
String -> Vec<u8>-| s.into_bytes()KcW华陈数据科技
&[u8] -> &str----| std::str::from_utf8(s).unwrap()KcW华陈数据科技
&[u8] -> String--| String::from_utf8(s).unwrap()KcW华陈数据科技
&[u8] -> Vec<u8>-| s.to_vec()KcW华陈数据科技
Vec<u8> -> &str----| std::str::from_utf8(&s).unwrap()KcW华陈数据科技
Vec<u8> -> String--| String::from_utf8(s).unwrap()KcW华陈数据科技
Vec<u8> -> &[u8]---| &s if possible* else s.as_slice()KcW华陈数据科技

上面转换内容已在网友提示下修正,之前版本答案有误导KcW华陈数据科技
 KcW华陈数据科技

  • String 和 &str 之间的转换:
// String 转 &str
let s = String::from("hello");
let s_slice: &str = &s;

// &str 转 String
let s = "hello";
let s_string: String = s.to_string();
  • Vec<u8> 和 &[u8] 之间的转换
// Vec<u8> 转 &[u8]
let v: Vec<u8> = vec![72, 101, 108, 108, 111]; // "Hello"
let v_slice: &[u8] = &v;

// &[u8] 转 Vec<u8>
let v_slice: &[u8] = &[72, 101, 108, 108, 111]; // "Hello"
let v_vec: Vec<u8> = v_slice.to_vec();
  • String 和 Vec<u8> 之间的转换:
// String 转 Vec<u8>
let s = String::from("hello");
let v: Vec<u8> = s.into_bytes();

// Vec<u8> 转 String
let v: Vec<u8> = vec![104, 101, 108, 108, 111]; // "hello"
let s: String = String::from_utf8_lossy(&v).to_string();
  • &str 和 &[u8] 之间的转换:
// &str 转 &[u8]
let s: &str = "hello";
let s_bytes: &[u8] = s.as_bytes();

// &[u8] 转 &str
let s_bytes: &[u8] = &[104, 101, 108, 108, 111]; // "hello"
let s_str: &str = std::str::from_utf8(s_bytes).unwrap(); 
KcW华陈数据科技
KcW华陈数据科技
注意:在这些转换中,可能会出现编码问题。特别是,在将字节序列转换为字符串时,必须考虑编码方式(例如UTF-8),否则会导致错误。在某些情况下,使用特定的编码方式(例如ISO 8859-1)可能更合适。KcW华陈数据科技
KcW华陈数据科技
KcW华陈数据科技
KcW华陈数据科技
 
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
实现php间隔一段时间执行一次某段代码
实现php间隔一段时间
相关文章
    无相关信息
栏目更新
栏目热门