Rust 什么时候应该实现std::convert::From vs std::convert::Into?
我看到它对任何实现的东西都有一个实现:Rust 什么时候应该实现std::convert::From vs std::convert::Into?,rust,Rust,我看到它对任何实现的东西都有一个实现: impl-Into for T 哪里 U:从, 在Rust 1.0标准库中,有许多From的实现,而Into仅在3个位置实现。这使它看起来像是从实现的应该是默认值。我确信,有时我想将实现到中,而不是从中实现,但我没有看到它们。TL;DR:更喜欢从实现 有趣的是,关于traits,我们提出了相反的总体实现: impl<T, U> From<T> for U where T: Into<U> 在Rust 1.1
impl-Into for T
哪里
U:从,
在Rust 1.0标准库中,有许多
From
的实现,而Into
仅在3个位置实现。这使它看起来像是从实现的应该是默认值。我确信,有时我想将实现到
中,而不是从
中实现,但我没有看到它们。TL;DR:更喜欢从
实现
有趣的是,关于traits,我们提出了相反的总体实现:
impl<T, U> From<T> for U
where
T: Into<U>
在Rust 1.14之前的标准库中,只有两个示例将实现为
,而不是从
实现:
impl-Into-for-String
impl-in for-PathBuf
我认为这是他们接口逻辑的反映OsString
实现了From
和From,其中T:AsRef
,因为它们是您想要构建OsString
的自然对象
然而,PathBuf
仍然实现Into
作为其从实现的反向操作,但此逻辑属于PathBuf
,而不是OsString
PathBuf
仍然实现Into
← 这一点在1.14.0:D中已被修复。标准库中不再有任何内容。