@@ -22,13 +22,15 @@ pub enum Edition {
22
22
Edition2018 ,
23
23
/// The 2021 edition
24
24
Edition2021 ,
25
+ /// The 2024 edition
26
+ Edition2024 ,
25
27
}
26
28
27
29
// Must be in order from oldest to newest.
28
30
pub const ALL_EDITIONS : & [ Edition ] =
29
- & [ Edition :: Edition2015 , Edition :: Edition2018 , Edition :: Edition2021 ] ;
31
+ & [ Edition :: Edition2015 , Edition :: Edition2018 , Edition :: Edition2021 , Edition :: Edition2024 ] ;
30
32
31
- pub const EDITION_NAME_LIST : & str = "2015|2018|2021" ;
33
+ pub const EDITION_NAME_LIST : & str = "2015|2018|2021|2024 " ;
32
34
33
35
pub const DEFAULT_EDITION : Edition = Edition :: Edition2015 ;
34
36
@@ -40,6 +42,7 @@ impl fmt::Display for Edition {
40
42
Edition :: Edition2015 => "2015" ,
41
43
Edition :: Edition2018 => "2018" ,
42
44
Edition :: Edition2021 => "2021" ,
45
+ Edition :: Edition2024 => "2024" ,
43
46
} ;
44
47
write ! ( f, "{}" , s)
45
48
}
@@ -51,6 +54,7 @@ impl Edition {
51
54
Edition :: Edition2015 => "rust_2015_compatibility" ,
52
55
Edition :: Edition2018 => "rust_2018_compatibility" ,
53
56
Edition :: Edition2021 => "rust_2021_compatibility" ,
57
+ Edition :: Edition2024 => "rust_2024_compatibility" ,
54
58
}
55
59
}
56
60
@@ -59,6 +63,7 @@ impl Edition {
59
63
Edition :: Edition2015 => sym:: rust_2015_preview,
60
64
Edition :: Edition2018 => sym:: rust_2018_preview,
61
65
Edition :: Edition2021 => sym:: rust_2021_preview,
66
+ Edition :: Edition2024 => sym:: rust_2024_preview,
62
67
}
63
68
}
64
69
@@ -67,8 +72,28 @@ impl Edition {
67
72
Edition :: Edition2015 => true ,
68
73
Edition :: Edition2018 => true ,
69
74
Edition :: Edition2021 => true ,
75
+ Edition :: Edition2024 => false ,
70
76
}
71
77
}
78
+
79
+ pub fn rust_2015 ( & self ) -> bool {
80
+ * self == Edition :: Edition2015
81
+ }
82
+
83
+ /// Are we allowed to use features from the Rust 2018 edition?
84
+ pub fn rust_2018 ( & self ) -> bool {
85
+ * self >= Edition :: Edition2018
86
+ }
87
+
88
+ /// Are we allowed to use features from the Rust 2021 edition?
89
+ pub fn rust_2021 ( & self ) -> bool {
90
+ * self >= Edition :: Edition2021
91
+ }
92
+
93
+ /// Are we allowed to use features from the Rust 2024 edition?
94
+ pub fn rust_2024 ( & self ) -> bool {
95
+ * self >= Edition :: Edition2024
96
+ }
72
97
}
73
98
74
99
impl FromStr for Edition {
@@ -78,6 +103,7 @@ impl FromStr for Edition {
78
103
"2015" => Ok ( Edition :: Edition2015 ) ,
79
104
"2018" => Ok ( Edition :: Edition2018 ) ,
80
105
"2021" => Ok ( Edition :: Edition2021 ) ,
106
+ "2024" => Ok ( Edition :: Edition2024 ) ,
81
107
_ => Err ( ( ) ) ,
82
108
}
83
109
}
0 commit comments