@@ -22,13 +22,15 @@ pub enum Edition {
2222 Edition2018 ,
2323 /// The 2021 edition
2424 Edition2021 ,
25+ /// The 2024 edition
26+ Edition2024 ,
2527}
2628
2729// Must be in order from oldest to newest.
2830pub const ALL_EDITIONS : & [ Edition ] =
29- & [ Edition :: Edition2015 , Edition :: Edition2018 , Edition :: Edition2021 ] ;
31+ & [ Edition :: Edition2015 , Edition :: Edition2018 , Edition :: Edition2021 , Edition :: Edition2024 ] ;
3032
31- pub const EDITION_NAME_LIST : & str = "2015|2018|2021" ;
33+ pub const EDITION_NAME_LIST : & str = "2015|2018|2021|2024 " ;
3234
3335pub const DEFAULT_EDITION : Edition = Edition :: Edition2015 ;
3436
@@ -40,6 +42,7 @@ impl fmt::Display for Edition {
4042 Edition :: Edition2015 => "2015" ,
4143 Edition :: Edition2018 => "2018" ,
4244 Edition :: Edition2021 => "2021" ,
45+ Edition :: Edition2024 => "2024" ,
4346 } ;
4447 write ! ( f, "{}" , s)
4548 }
@@ -51,6 +54,7 @@ impl Edition {
5154 Edition :: Edition2015 => "rust_2015_compatibility" ,
5255 Edition :: Edition2018 => "rust_2018_compatibility" ,
5356 Edition :: Edition2021 => "rust_2021_compatibility" ,
57+ Edition :: Edition2024 => "rust_2024_compatibility" ,
5458 }
5559 }
5660
@@ -59,6 +63,7 @@ impl Edition {
5963 Edition :: Edition2015 => sym:: rust_2015_preview,
6064 Edition :: Edition2018 => sym:: rust_2018_preview,
6165 Edition :: Edition2021 => sym:: rust_2021_preview,
66+ Edition :: Edition2024 => sym:: rust_2024_preview,
6267 }
6368 }
6469
@@ -67,8 +72,28 @@ impl Edition {
6772 Edition :: Edition2015 => true ,
6873 Edition :: Edition2018 => true ,
6974 Edition :: Edition2021 => true ,
75+ Edition :: Edition2024 => false ,
7076 }
7177 }
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+ }
7297}
7398
7499impl FromStr for Edition {
@@ -78,6 +103,7 @@ impl FromStr for Edition {
78103 "2015" => Ok ( Edition :: Edition2015 ) ,
79104 "2018" => Ok ( Edition :: Edition2018 ) ,
80105 "2021" => Ok ( Edition :: Edition2021 ) ,
106+ "2024" => Ok ( Edition :: Edition2024 ) ,
81107 _ => Err ( ( ) ) ,
82108 }
83109 }
0 commit comments