pub const fn from_utf8(v: &[u8]) -> Result<&str, Utf8Error>
Expand description
将字节切片转换为字符串切片。
字符串 (&str
) 由字节 (u8
) 组成,字节 (&[u8]
) 由字节组成,因此此函数在两者之间进行转换。
并非所有的字节片都是有效的字符串切片,但是: &str
要求它是有效的 UTF-8。
from_utf8()
检查以确保字节是有效的 UTF-8,然后进行转换。
如果您确定字节切片是有效的 UTF-8,并且不想增加有效性检查的开销,则此函数有一个不安全的版本 from_utf8_unchecked
,它具有相同的行为,但是会跳过检查。
如果需要 String
而不是 &str
,请考虑使用 String::from_utf8
。
因为您可以栈分配 [u8; N]
,也可以使用它的 &[u8]
,所以此函数是具有栈分配的字符串的一种方法。在下面的示例部分中有一个示例。
Errors
如果切片不是 UTF-8,则返回 Err
,并说明为什么提供的切片不是 UTF-8。
Examples
基本用法:
use std::str;
// vector 中的一些字节
let sparkle_heart = vec![240, 159, 146, 150];
// 我们知道这些字节是有效的,因此只需使用 `unwrap()`。
let sparkle_heart = str::from_utf8(&sparkle_heart).unwrap();
assert_eq!("💖", sparkle_heart);
Run字节不正确:
use std::str;
// vector 中的一些无效字节
let sparkle_heart = vec![0, 159, 146, 150];
assert!(str::from_utf8(&sparkle_heart).is_err());
Run有关可以返回的错误类型的更多详细信息,请参见 Utf8Error
文档。
一个栈分配的字符串:
use std::str;
// 栈分配的数组中的一些字节
let sparkle_heart = [240, 159, 146, 150];
// 我们知道这些字节是有效的,因此只需使用 `unwrap()`。
let sparkle_heart: &str = str::from_utf8(&sparkle_heart).unwrap();
assert_eq!("💖", sparkle_heart);
Run