- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
从 Rust 1.34 开始,我们可以通过实现 TryFrom
来编写类型之间的易错转换。特征:
struct Foo(i32);
struct Bar;
impl TryFrom<Bar> for Foo {
type Error = ();
fn try_from(_b: Bar) -> Result<Foo, ()> {
Ok(Foo(42))
}
}
在 Rust 1.41 中,孤儿规则已经放宽,所以我们也可以这样写:
struct Foo(i32);
struct Bar;
impl From<Bar> for Result<Foo, ()> {
fn from(_b: Bar) -> Result<Foo, ()> {
Ok(Foo(42))
}
}
根据
this trial这两种解决方案似乎同样有效。
TryFrom
的建议。 ,
From
或两者。宏编写者需要知道它是否需要处理这两种情况等。这取决于当今生态系统的状态,不能轻易回答。
最佳答案
在 TryFrom
,错误是关联类型——它由类型 Bar
修复. From
不是这种情况,实际上你可以实现 From
对于不止一种错误类型。除非你打算这样做(这很奇怪),否则你应该坚持 TryFrom
.
关于rust - impl TryFrom<Bar> for Foo 与 impl From<Bar> for Result<Foo, ()> 的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62566447/
似乎有两种方法可以尝试将向量转换为数组,通过切片( fn a )或直接( fn b ): use std::array::TryFromSliceError; use std::convert::Tr
我应该写: impl From for OtherType 或者应该是 impl From for OtherType 我很难找到答案,可能是因为我的词汇量不足。我真的不是特别关心论点的引用性/值(v
假设我想对引用实现转换。在这种情况下,它是从 &f64 -> Foo 的转换. use std::convert::{TryFrom, TryInto}; struct Foo { a: f6
我想转换一个 usize将变量键入 u32 Rust 中的类型变量。我知道 usize变量可能包含大于 2^32 的值,在这种情况下转换应该会失败。我正在尝试使用 TryFrom执行转换的特征。 这是
我想转换一个 usize将变量键入 u32 Rust 中的类型变量。我知道 usize变量可能包含大于 2^32 的值,在这种情况下转换应该会失败。我正在尝试使用 TryFrom执行转换的特征。 这是
我正在尝试为从二进制数据(从磁盘读取)创建的一堆类型实现共同特征。大多数特征方法可以使用默认实现,只有转换等需要单独实现。我想使用 TryFrom从二进制数据转换为我的类型的特征,但我不知道如何表达(
从 Rust 1.34 开始,我们可以通过实现 TryFrom 来编写类型之间的易错转换。特征: struct Foo(i32); struct Bar; impl TryFrom for Foo {
我是一名优秀的程序员,十分优秀!