@@ -23,13 +23,20 @@ pub enum Edition {
2323 Edition2021 ,
2424 /// The 2024 edition
2525 Edition2024 ,
26+ /// The 2027 edition
27+ Edition2027 ,
2628}
2729
2830// Must be in order from oldest to newest.
29- pub const ALL_EDITIONS : & [ Edition ] =
30- & [ Edition :: Edition2015 , Edition :: Edition2018 , Edition :: Edition2021 , Edition :: Edition2024 ] ;
31+ pub const ALL_EDITIONS : & [ Edition ] = & [
32+ Edition :: Edition2015 ,
33+ Edition :: Edition2018 ,
34+ Edition :: Edition2021 ,
35+ Edition :: Edition2024 ,
36+ Edition :: Edition2027 ,
37+ ] ;
3138
32- pub const EDITION_NAME_LIST : & str = "2015|2018|2021|2024" ;
39+ pub const EDITION_NAME_LIST : & str = "2015|2018|2021|2024|2027 " ;
3340
3441pub const DEFAULT_EDITION : Edition = Edition :: Edition2015 ;
3542
@@ -42,6 +49,7 @@ impl fmt::Display for Edition {
4249 Edition :: Edition2018 => "2018" ,
4350 Edition :: Edition2021 => "2021" ,
4451 Edition :: Edition2024 => "2024" ,
52+ Edition :: Edition2027 => "2027" ,
4553 } ;
4654 write ! ( f, "{s}" )
4755 }
@@ -54,6 +62,7 @@ impl Edition {
5462 Edition :: Edition2018 => "rust_2018_compatibility" ,
5563 Edition :: Edition2021 => "rust_2021_compatibility" ,
5664 Edition :: Edition2024 => "rust_2024_compatibility" ,
65+ Edition :: Edition2027 => "rust_2027_compatibility" ,
5766 }
5867 }
5968
@@ -63,6 +72,7 @@ impl Edition {
6372 Edition :: Edition2018 => true ,
6473 Edition :: Edition2021 => true ,
6574 Edition :: Edition2024 => true ,
75+ Edition :: Edition2027 => false ,
6676 }
6777 }
6878
@@ -85,6 +95,11 @@ impl Edition {
8595 pub fn at_least_rust_2024 ( self ) -> bool {
8696 self >= Edition :: Edition2024
8797 }
98+
99+ /// Are we allowed to use features from the Rust 2027 edition?
100+ pub fn at_least_rust_2027 ( self ) -> bool {
101+ self >= Edition :: Edition2027
102+ }
88103}
89104
90105impl FromStr for Edition {
@@ -95,6 +110,7 @@ impl FromStr for Edition {
95110 "2018" => Ok ( Edition :: Edition2018 ) ,
96111 "2021" => Ok ( Edition :: Edition2021 ) ,
97112 "2024" => Ok ( Edition :: Edition2024 ) ,
113+ "2027" => Ok ( Edition :: Edition2027 ) ,
98114 _ => Err ( ( ) ) ,
99115 }
100116 }
0 commit comments