Struct std::ffi::OsStr 1.0.0[−][src]
pub struct OsStr { /* fields omitted */ }
Expand description
借用引用到 OS 字符串 (请参见 OsString
)。
此类型表示操作系统首选表示形式中字符串的借用引用。
&OsStr
是 OsString
就像 &str
到 String
: 每对中的前者都是借来的; 后者是拥有的字符串。
请参见模块中关于 conversions 的顶级文档,以讨论为 OsStr
from/to 原生表示形式的 conversions 而实现的特征。。
Implementations
任何非 Unicode 序列都将替换为 U+FFFD REPLACEMENT CHARACTER
。
Examples
使用无效的 Unicode 在 OsStr
上调用 to_string_lossy
:
// 注意,由于 Unix 和 Windows 表示字符串的方式不同,我们不得不使该示例复杂化,使用不同的源数据和通过不同的平台扩展来设置示例 `OsStr`。 // 可以理解,实际上,仅通过收集用户命令行参数,您就可以得到这样的示例无效序列。 #[cfg(unix)] { use std::ffi::OsStr; use std::os::unix::ffi::OsStrExt; // 此处,值 0x66 和 0x6f 分别对应于 'f' 和 'o'。 // 值 0x80 是一个单独的连续字节,在 UTF-8 序列中无效。 let source = [0x66, 0x6f, 0x80, 0x6f]; let os_str = OsStr::from_bytes(&source[..]); assert_eq!(os_str.to_string_lossy(), "fo�o"); } #[cfg(windows)] { use std::ffi::OsString; use std::os::windows::prelude::*; // 在此,值 0x0066 和 0x006f 分别对应于 'f' 和 'o'。 // 值 0xD800 是一个单独的替代一半,在 UTF-16 序列中无效。 let source = [0x0066, 0x006f, 0xD800, 0x006f]; let os_string = OsString::from_wide(&source[..]); let os_str = os_string.as_os_str(); assert_eq!(os_str.to_string_lossy(), "fo�o"); }Run
返回此 OsStr
的长度。
请注意,这不会以 OS 字符串形式返回字符串中的字节数。
返回的长度是 OsStr
使用的基础存储的长度。
如 OsString
简介中所讨论的,OsString
和 OsStr
以最适合于原生平台和 Rust 字符串形式之间的廉价相互转换的形式存储字符串,这两种形式在存储大小和编码方面可能都大不相同。
此数字对于传递给其他方法 (例如 OsString::with_capacity
) 以避免重新分配非常有用。
Examples
use std::ffi::OsStr; let os_str = OsStr::new(""); assert_eq!(os_str.len(), 0); let os_str = OsStr::new("foo"); assert_eq!(os_str.len(), 3);Run
将此字符串就地转换为其 ASCII 小写等效项。
ASCII 字母 ‘A’ 到 ‘Z’ 映射到 ‘a’ 到 ‘z’,但是非 ASCII 字母不变。
要返回新的小写值而不修改现有值,请使用 OsStr::to_ascii_lowercase
。
Examples
use std::ffi::OsString; let mut s = OsString::from("GRÜßE, JÜRGEN ❤"); s.make_ascii_lowercase(); assert_eq!("grÜße, jÜrgen ❤", s);Run
将此字符串就地转换为其 ASCII 大写等效项。
ASCII 字母 ‘a’ 到 ‘z’ 映射到 ‘A’ 到 ‘Z’,但是非 ASCII 字母不变。
要返回新的大写值而不修改现有值,请使用 OsStr::to_ascii_uppercase
。
Examples
use std::ffi::OsString; let mut s = OsString::from("Grüße, Jürgen ❤"); s.make_ascii_uppercase(); assert_eq!("GRüßE, JüRGEN ❤", s);Run
返回此字符串的副本,其中每个字符都映射为其等效的 ASCII 小写字母。
ASCII 字母 ‘A’ 到 ‘Z’ 映射到 ‘a’ 到 ‘z’,但是非 ASCII 字母不变。
要就地小写该值,请使用 OsStr::make_ascii_lowercase
。
Examples
use std::ffi::OsString; let s = OsString::from("Grüße, Jürgen ❤"); assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());Run
返回此字符串的副本,其中每个字符都映射为其等效的 ASCII 大写字母。
ASCII 字母 ‘a’ 到 ‘z’ 映射到 ‘A’ 到 ‘Z’,但是非 ASCII 字母不变。
要就地将值大写,请使用 OsStr::make_ascii_uppercase
。
Examples
use std::ffi::OsString; let s = OsString::from("Grüße, Jürgen ❤"); assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());Run
检查两个字符串是否为 ASCII 不区分大小写的匹配项。
与 to_ascii_lowercase(a) == to_ascii_lowercase(b)
相同,但不分配和复制临时文件。
Examples
use std::ffi::OsString; assert!(OsString::from("Ferris").eq_ignore_ascii_case("FERRIS")); assert!(OsString::from("Ferrös").eq_ignore_ascii_case("FERRöS")); assert!(!OsString::from("Ferrös").eq_ignore_ascii_case("FERRÖS"));Run
Trait Implementations
fn from(s: &OsStr) -> Box<OsStr>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<R: Read + ?Sized> Read for Box<R>impl<W: Write + ?Sized> Write for Box<W>
[src]
fn from(s: &OsStr) -> Box<OsStr>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<R: Read + ?Sized> Read for Box<R>impl<W: Write + ?Sized> Write for Box<W>
[src]impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<R: Read + ?Sized> Read for Box<R>impl<W: Write + ?Sized> Write for Box<W>
执行转换。
从迭代器创建一个值。 Read more
fn encode_wide(&self) -> EncodeWide<'_>ⓘNotable traits for EncodeWide<'a>impl<'a> Iterator for EncodeWide<'a> type Item = u16;
[src]
fn encode_wide(&self) -> EncodeWide<'_>ⓘNotable traits for EncodeWide<'a>impl<'a> Iterator for EncodeWide<'a> type Item = u16;
[src]impl<'a> Iterator for EncodeWide<'a> type Item = u16;
将 OsStr
重新编码为宽字符序列,即可能格式不正确的 UTF-16。 Read more
如果存在,则此方法返回 self
和 other
值之间的顺序。 Read more