Skip to content

Commit 2491eda

Browse files
authored
Rollup merge of #134949 - compiler-errors:froms, r=jieyouxu
Convert some `Into` impls into `From` impls From the [`From`](https://doc.rust-lang.org/std/convert/trait.From.html) docs: > One should always prefer implementing `From` over [`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) because implementing `From` automatically provides one with an implementation of [`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) thanks to the blanket implementation in the standard library. > > Only implement [`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) when targeting a version prior to Rust 1.41 and converting to a type outside the current crate. `From` was not able to do these types of conversions in earlier versions because of Rust’s orphaning rules. See [Into](https://doc.rust-lang.org/std/convert/trait.Into.html) for more details. Some of these impls are likely from before 1.41, and then some others were probably just mistakes. Building nightly rust is definitely not supported on 1.41, so let's modernize these impls :D
2 parents 7da22aa + aea2a6f commit 2491eda

File tree

9 files changed

+45
-45
lines changed

9 files changed

+45
-45
lines changed

compiler/rustc_ast/src/ast.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -241,15 +241,15 @@ impl AngleBracketedArg {
241241
}
242242
}
243243

244-
impl Into<P<GenericArgs>> for AngleBracketedArgs {
245-
fn into(self) -> P<GenericArgs> {
246-
P(GenericArgs::AngleBracketed(self))
244+
impl From<AngleBracketedArgs> for P<GenericArgs> {
245+
fn from(val: AngleBracketedArgs) -> Self {
246+
P(GenericArgs::AngleBracketed(val))
247247
}
248248
}
249249

250-
impl Into<P<GenericArgs>> for ParenthesizedArgs {
251-
fn into(self) -> P<GenericArgs> {
252-
P(GenericArgs::Parenthesized(self))
250+
impl From<ParenthesizedArgs> for P<GenericArgs> {
251+
fn from(val: ParenthesizedArgs) -> Self {
252+
P(GenericArgs::Parenthesized(val))
253253
}
254254
}
255255

compiler/rustc_ast/src/ptr.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,9 @@ impl<T> From<Vec<T>> for P<[T]> {
158158
}
159159
}
160160

161-
impl<T> Into<Vec<T>> for P<[T]> {
162-
fn into(self) -> Vec<T> {
163-
self.into_vec()
161+
impl<T> From<P<[T]>> for Vec<T> {
162+
fn from(val: P<[T]>) -> Self {
163+
val.into_vec()
164164
}
165165
}
166166

compiler/rustc_error_messages/src/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -357,9 +357,9 @@ impl From<Cow<'static, str>> for DiagMessage {
357357
/// subdiagnostic derive refers to typed identifiers that are `DiagMessage`s, so need to be
358358
/// able to convert between these, as much as they'll be converted back into `DiagMessage`
359359
/// using `with_subdiagnostic_message` eventually. Don't use this other than for the derive.
360-
impl Into<SubdiagMessage> for DiagMessage {
361-
fn into(self) -> SubdiagMessage {
362-
match self {
360+
impl From<DiagMessage> for SubdiagMessage {
361+
fn from(val: DiagMessage) -> Self {
362+
match val {
363363
DiagMessage::Str(s) => SubdiagMessage::Str(s),
364364
DiagMessage::Translated(s) => SubdiagMessage::Translated(s),
365365
DiagMessage::FluentIdentifier(id, None) => SubdiagMessage::FluentIdentifier(id),

compiler/rustc_errors/src/diagnostic.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,9 @@ impl IntoDiagArg for DiagArgValue {
156156
}
157157
}
158158

159-
impl Into<FluentValue<'static>> for DiagArgValue {
160-
fn into(self) -> FluentValue<'static> {
161-
match self {
159+
impl From<DiagArgValue> for FluentValue<'static> {
160+
fn from(val: DiagArgValue) -> Self {
161+
match val {
162162
DiagArgValue::Str(s) => From::from(s),
163163
DiagArgValue::Number(n) => From::from(n),
164164
DiagArgValue::StrListSepByAnd(l) => fluent_value_from_str_list_sep_by_and(l),

compiler/rustc_hir/src/hir.rs

+15-15
Original file line numberDiff line numberDiff line change
@@ -4072,33 +4072,33 @@ impl<'hir> OwnerNode<'hir> {
40724072
}
40734073
}
40744074

4075-
impl<'hir> Into<OwnerNode<'hir>> for &'hir Item<'hir> {
4076-
fn into(self) -> OwnerNode<'hir> {
4077-
OwnerNode::Item(self)
4075+
impl<'hir> From<&'hir Item<'hir>> for OwnerNode<'hir> {
4076+
fn from(val: &'hir Item<'hir>) -> Self {
4077+
OwnerNode::Item(val)
40784078
}
40794079
}
40804080

4081-
impl<'hir> Into<OwnerNode<'hir>> for &'hir ForeignItem<'hir> {
4082-
fn into(self) -> OwnerNode<'hir> {
4083-
OwnerNode::ForeignItem(self)
4081+
impl<'hir> From<&'hir ForeignItem<'hir>> for OwnerNode<'hir> {
4082+
fn from(val: &'hir ForeignItem<'hir>) -> Self {
4083+
OwnerNode::ForeignItem(val)
40844084
}
40854085
}
40864086

4087-
impl<'hir> Into<OwnerNode<'hir>> for &'hir ImplItem<'hir> {
4088-
fn into(self) -> OwnerNode<'hir> {
4089-
OwnerNode::ImplItem(self)
4087+
impl<'hir> From<&'hir ImplItem<'hir>> for OwnerNode<'hir> {
4088+
fn from(val: &'hir ImplItem<'hir>) -> Self {
4089+
OwnerNode::ImplItem(val)
40904090
}
40914091
}
40924092

4093-
impl<'hir> Into<OwnerNode<'hir>> for &'hir TraitItem<'hir> {
4094-
fn into(self) -> OwnerNode<'hir> {
4095-
OwnerNode::TraitItem(self)
4093+
impl<'hir> From<&'hir TraitItem<'hir>> for OwnerNode<'hir> {
4094+
fn from(val: &'hir TraitItem<'hir>) -> Self {
4095+
OwnerNode::TraitItem(val)
40964096
}
40974097
}
40984098

4099-
impl<'hir> Into<Node<'hir>> for OwnerNode<'hir> {
4100-
fn into(self) -> Node<'hir> {
4101-
match self {
4099+
impl<'hir> From<OwnerNode<'hir>> for Node<'hir> {
4100+
fn from(val: OwnerNode<'hir>) -> Self {
4101+
match val {
41024102
OwnerNode::Item(n) => Node::Item(n),
41034103
OwnerNode::ForeignItem(n) => Node::ForeignItem(n),
41044104
OwnerNode::ImplItem(n) => Node::ImplItem(n),

compiler/rustc_metadata/src/rmeta/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -303,9 +303,9 @@ pub(crate) struct RawDefId {
303303
index: u32,
304304
}
305305

306-
impl Into<RawDefId> for DefId {
307-
fn into(self) -> RawDefId {
308-
RawDefId { krate: self.krate.as_u32(), index: self.index.as_u32() }
306+
impl From<DefId> for RawDefId {
307+
fn from(val: DefId) -> Self {
308+
RawDefId { krate: val.krate.as_u32(), index: val.index.as_u32() }
309309
}
310310
}
311311

compiler/rustc_middle/src/mir/interpret/error.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,10 @@ impl ReportedErrorInfo {
8888
}
8989
}
9090

91-
impl Into<ErrorGuaranteed> for ReportedErrorInfo {
91+
impl From<ReportedErrorInfo> for ErrorGuaranteed {
9292
#[inline]
93-
fn into(self) -> ErrorGuaranteed {
94-
self.error
93+
fn from(val: ReportedErrorInfo) -> Self {
94+
val.error
9595
}
9696
}
9797

compiler/rustc_middle/src/ty/adt.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,9 @@ pub enum AdtKind {
249249
Enum,
250250
}
251251

252-
impl Into<DataTypeKind> for AdtKind {
253-
fn into(self) -> DataTypeKind {
254-
match self {
252+
impl From<AdtKind> for DataTypeKind {
253+
fn from(val: AdtKind) -> Self {
254+
match val {
255255
AdtKind::Struct => DataTypeKind::Struct,
256256
AdtKind::Union => DataTypeKind::Union,
257257
AdtKind::Enum => DataTypeKind::Enum,

compiler/rustc_trait_selection/src/error_reporting/infer/need_type_info.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,12 @@ pub enum TypeAnnotationNeeded {
4545
E0284,
4646
}
4747

48-
impl Into<ErrCode> for TypeAnnotationNeeded {
49-
fn into(self) -> ErrCode {
50-
match self {
51-
Self::E0282 => E0282,
52-
Self::E0283 => E0283,
53-
Self::E0284 => E0284,
48+
impl From<TypeAnnotationNeeded> for ErrCode {
49+
fn from(val: TypeAnnotationNeeded) -> Self {
50+
match val {
51+
TypeAnnotationNeeded::E0282 => E0282,
52+
TypeAnnotationNeeded::E0283 => E0283,
53+
TypeAnnotationNeeded::E0284 => E0284,
5454
}
5555
}
5656
}

0 commit comments

Comments
 (0)