pub fn as_deref(&self) -> Option<&T::Target> 从Option<T> (或 &Option<T> )转换为 Option<&T::Target>。 将原始选项保留在原地,创建一个引用原始选项的新选项,另外通过 Deref 强制内容。 例子 let x: Option<String> = Some("hey".to_owned()); assert_eq!(x.as_deref(), Some("hey"))...
从Result<T, E> (或 &mut Result<T, E> )转换为 Result<&mut <T as DerefMut>::Target, &mut E>。 通过 DerefMut 强制原始 Result 的 Ok 变体并返回新的 Result 。 例子 let mut s = "HELLO".to_string(); let mut x: Result<String, u32> = Ok("hello".to_string()); let y: Resul...
(后者通常等价于as_deref(),并显示String“解引用”到str,这就是为什么它被称为as_deref()。
}fnmain() {letoption_name:Option<String> =Some("Alice".to_owned());// let r: Option<&String> = option_name.as_ref();option_name.as_ref().map(hello);// let r2: Option<&str> = option_name.as_deref();option_name.as_deref().map(greet);println!("{:?}", option_name);// ...
Rust程序设计读书笔记12-特型AsRef, 视频播放量 12、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 零基础学Bevy, 作者简介 问渠那得清如许?为有源头活水来。,相关视频:Rust程序设计读书笔记12-特型Deref,Rust程序设计读书笔记10-泛型和特型-上
Option<String>调用,as_ref()将导致Option<&String>。as_deref()为您提供Option<&str>,这在大多数情况下为您提供了类似的功能。这里,as_deref()的要点是能够将其链接到.unwrap_or_default()。 可以对Option<&str>调用unwrap_or_default(),因为&str实现了Default<&str as Default>::default(),只返回对静态...
虽然Option<&String>和Option<&str>在功能上相似,但它们并不完全相同。在这里,as_deref()的要点是...
(后者通常相当于as_deref(),并演示了String“取消引用”到str,这就是它被称为 的原因as_deref()。) 虽然Option<&String>和Option<&str>功能相似,但它们并不完全相同。这里 的要点as_deref()是能够将其链接到.unwrap_or_default()。 unwrap_or_default()可以被调用,因为Option<&str>Implements&str 只 返回...
一般来说,如果出现以下情况,就不应该实现Deref特性: deref 实现可能意外失败;或 类型的某方法和目标类型的不一致;或 不希望将 deref 转换作为公共 API 的一部分。 AsRef和Borrow的签名和Deref也很相似,在大多数情况下也需要同时实现它们中的一个或两个。
在Rust 中,AsRef和Borrow这两个 trait 都可以为类型实现T → &U的操作,但是其中又有些微差别。 一、AsRef的使用 1、定义数据结构 usestd::convert::AsRef;structSomeType(usize); 2、实现了将 `SomeType → &usize // 为 SomeType 实现 AsRef<usize>,可以获得其内部值的引用,implAsRef<usize>forSome...