#参考 #映射 #结果 #选项 #as-ref

ref-map

用于将 Option 和 Result 映射到引用的辅助特质

3 个版本

0.1.3 2021 年 8 月 15 日
0.1.2 2021 年 1 月 16 日
0.1.1 2020 年 1 月 26 日

Rust 模式 中排名第 2542

Download history 194/week @ 2024-03-13 136/week @ 2024-03-20 95/week @ 2024-03-27 123/week @ 2024-04-03 119/week @ 2024-04-10 135/week @ 2024-04-17 211/week @ 2024-04-24 205/week @ 2024-05-01 164/week @ 2024-05-08 174/week @ 2024-05-15 200/week @ 2024-05-22 108/week @ 2024-05-29 135/week @ 2024-06-05 83/week @ 2024-06-12 87/week @ 2024-06-19 165/week @ 2024-06-26

每月下载量 493
4 个 crate 中使用

MIT 许可证

10KB
78

ref-map

Build Status

Rust crate,提供对 Option<T>Result<T, E> 的便利特质。

没有依赖项,应在任何 Rust 发布渠道上工作。

提供了三种方法,ref_map() 用于 Some(_)Ok(_),以及 ref_map_err() 用于 Err(_)。这允许轻松地从可能值映射借用值。

use ref_map::*;

let string: Option<String> = Some("hello world\n".into());

// Without ref-map:
// the .as_ref() is necessary because otherwise it tries to consume the String
let message: Option<&str> = string.as_ref().map(|s| s.trim());

// With ref-map:
let message: Option<&str> = string.ref_map(|s| s.trim());

还提供了 ref_map() 用于 Result<T, E>Ok,以及 ref_map_err() 用于 Err


版权 (C) 2020-2021 Ammon Smith

在 MIT 许可证下提供。


lib.rs:

处理 OptionResult 的引用时的便利方法。

它引入了两个特质,OptionRefMapResultRefMap,它们分别向它们各自的标准库枚举添加方法,以避免在它们的值上执行任何 .map() 方法之前需要添加 .as_ref()

这在您想从 OptionResult 中借用,但又想避免先获取内部值引用的模板代码时非常有用。

use ref_map::*;

let string: Option<String> = Some("hello world\n".into());

// Without ref-map:
// the .as_ref() is necessary because otherwise it tries to consume the String
let message: Option<&str> = string.as_ref().map(|s| s.trim());

// With ref-map:
let message: Option<&str> = string.ref_map(|s| s.trim());

同样,对于 Result,有 .ref_map().ref_map_err() 方法,可以模仿它们的 .map().map_err() 方法

let answer: Result<PathBuf, String> = Ok(PathBuf::from("/test"));

// Mapping borrowed Ok(_) to another type
let path: Result<&Path, &String> = answer.ref_map(|p| p.as_path());

// Mapping borrower Err(_)
let error: Result<&PathBuf, &str> = answer.ref_map_err(|e| e.as_str());

无运行时依赖