Function core::str::from_utf8 1.0.0[−][src]
pub 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::from_utf8(&sparkle_heart).unwrap(); assert_eq!("💖", sparkle_heart);Run