当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust from_utf8用法及代码示例


本文简要介绍rust语言中 Function core::str::from_utf8 的用法。

用法

pub fn from_utf8(v: &[u8]) -> Result<&str, Utf8Error>

将字节切片转换为字符串切片。

字符串切片 ( &str ) 由字节 ( u8 ) 组成,字节切片 ( &[u8] ) 由字节组成,因此此函数在两者之间进行转换。但是,并非所有字节切片都是有效的字符串切片: &str 要求它是有效的 UTF-8。 from_utf8() 检查以确保字节是有效的 UTF-8,然后进行转换。

如果您确定字节切片是有效的 UTF-8,并且您不想产生有效性检查的开销,则此函数有一个不安全版本 from_utf8_unchecked ,它具有相同的行为但跳过查看。

如果您需要 String 而不是 &str ,请考虑 String::from_utf8

因为您可以 stack-allocate 和 [u8; N] ,并且可以从中获取 &[u8] ,所以此函数是获得 stack-allocated 字符串的一种方法。下面的示例部分中有一个示例。

错误

如果切片不是 UTF-8,则返回 Err,并说明为什么提供的切片不是 UTF-8。

例子

基本用法:

use std::str;

// some bytes, in a vector
let sparkle_heart = vec![240, 159, 146, 150];

// We know these bytes are valid, so just use `unwrap()`.
let sparkle_heart = str::from_utf8(&sparkle_heart).unwrap();

assert_eq!("💖", sparkle_heart);

不正确的字节:

use std::str;

// some invalid bytes, in a vector
let sparkle_heart = vec![0, 159, 146, 150];

assert!(str::from_utf8(&sparkle_heart).is_err());

有关可以返回的错误类型的更多详细信息,请参阅 Utf8Error 的文档。

一个“stack allocated string”:

use std::str;

// some bytes, in a stack-allocated array
let sparkle_heart = [240, 159, 146, 150];

// We know these bytes are valid, so just use `unwrap()`.
let sparkle_heart = str::from_utf8(&sparkle_heart).unwrap();

assert_eq!("💖", sparkle_heart);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function core::str::from_utf8。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。