本文简要介绍rust语言中 Function alloc::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 from_utf8_unchecked用法及代码示例
- Rust from_utf8用法及代码示例
- Rust from_utf8_mut用法及代码示例
- Rust from_utf8_unchecked_mut用法及代码示例
- Rust from_u32_unchecked用法及代码示例
- Rust from_u32用法及代码示例
- Rust from_fn用法及代码示例
- Rust from_digit用法及代码示例
- Rust from_raw_parts用法及代码示例
- Rust from_boxed_utf8_unchecked用法及代码示例
- Rust f32.exp用法及代码示例
- Rust f32.hypot用法及代码示例
- Rust f32.minimum用法及代码示例
- Rust f64.signum用法及代码示例
- Rust f64.sqrt用法及代码示例
- Rust f32.sqrt用法及代码示例
- Rust f32.abs_sub用法及代码示例
- Rust f64.is_finite用法及代码示例
- Rust f32.cos用法及代码示例
- Rust f32.is_sign_positive用法及代码示例
- Rust f32.log10用法及代码示例
- Rust f64.round用法及代码示例
- Rust format_args用法及代码示例
- Rust f32.total_cmp用法及代码示例
- Rust f64.div_euclid用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function alloc::str::from_utf8。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。