sách gpt4 ai đã đi

Nếu tôi triển khai From cho B, nó cũng sẽ là Vec Thực hiện Từ<>>?

In lại 作者:行者123 更新时间:2023-11-29 08:14:15 34 4
mua khóa gpt4 Nike

好像没有,因为我有实现From for 的代码, 我可以转换 MỘTđến B.into() , 但同样的事情不适用于 Vec .into()一个Vec .

要么我搞砸了阻止实现派生的事情,要么这不应该发生。

如果它不应该工作,为什么不呢?像这样的代码似乎可以工作:

impl, B> From<>> for Vec {
// ... map .into onto vec of As to vec of Bs ...
}

我猜它比这更复杂。

1 Câu trả lời

无需猜测 From 的实现存在 Vec ;他们是all listed in the docs . Rust 1.21.0 的列表:

impl<'a, T> From<&'a mut [T]> for Vec { /**/ }

impl From<>> for Vec { /**/ }

impl From<>> for Vec { /**/ }

impl<'a, T> From<&'a [T]> for Vec { /**/ }

impl From for Vec { /**/ }

impl<'a, T> From> for Vec { /**/ }

impl<'a> From<&'a str> for Vec { /**/ }

impl From> for Vec { /**/ }

相反,你会想做这样的事情:

let b: Vec = a.into_iter().map(Into::into).collect();

如果你试图实现这个,你会失败:

error[E0119]: conflicting implementations of trait `core::convert::From>` for type `vec::Vec<_>`:
--> /Users/shep/Projects/rust/src/liballoc/vec.rs:2190:1
|
2190 | / impl From<>> for Vec
2191 | | where A: Into
2192 | | {
2193 | | fn from(s: Vec
) -> Vec {
2194 | | s.into_iter().map(Into::into).collect()
2195 | | }
2196 | | }
| |_^
|
= note: conflicting implementation in crate `core`

没有什么能阻止 MỘTBtừ同一类型。在那种情况下,您将与 From 的反身实现发生冲突。 : impl From for T .

Xem thêm:

34 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com