當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust from_utf8用法及代碼示例


本文簡要介紹rust語言中 Function std::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 std::str::from_utf8。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。