@@ -23,13 +23,20 @@ pub enum Edition {
23
23
Edition2021 ,
24
24
/// The 2024 edition
25
25
Edition2024 ,
26
+ /// The 2027 edition
27
+ Edition2027 ,
26
28
}
27
29
28
30
// 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
+ ] ;
31
38
32
- pub const EDITION_NAME_LIST : & str = "2015|2018|2021|2024" ;
39
+ pub const EDITION_NAME_LIST : & str = "2015|2018|2021|2024|2027 " ;
33
40
34
41
pub const DEFAULT_EDITION : Edition = Edition :: Edition2015 ;
35
42
@@ -42,6 +49,7 @@ impl fmt::Display for Edition {
42
49
Edition :: Edition2018 => "2018" ,
43
50
Edition :: Edition2021 => "2021" ,
44
51
Edition :: Edition2024 => "2024" ,
52
+ Edition :: Edition2027 => "2027" ,
45
53
} ;
46
54
write ! ( f, "{s}" )
47
55
}
@@ -54,6 +62,7 @@ impl Edition {
54
62
Edition :: Edition2018 => "rust_2018_compatibility" ,
55
63
Edition :: Edition2021 => "rust_2021_compatibility" ,
56
64
Edition :: Edition2024 => "rust_2024_compatibility" ,
65
+ Edition :: Edition2027 => "rust_2027_compatibility" ,
57
66
}
58
67
}
59
68
@@ -63,6 +72,7 @@ impl Edition {
63
72
Edition :: Edition2018 => true ,
64
73
Edition :: Edition2021 => true ,
65
74
Edition :: Edition2024 => true ,
75
+ Edition :: Edition2027 => false ,
66
76
}
67
77
}
68
78
@@ -85,6 +95,11 @@ impl Edition {
85
95
pub fn at_least_rust_2024 ( self ) -> bool {
86
96
self >= Edition :: Edition2024
87
97
}
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
+ }
88
103
}
89
104
90
105
impl FromStr for Edition {
@@ -95,6 +110,7 @@ impl FromStr for Edition {
95
110
"2018" => Ok ( Edition :: Edition2018 ) ,
96
111
"2021" => Ok ( Edition :: Edition2021 ) ,
97
112
"2024" => Ok ( Edition :: Edition2024 ) ,
113
+ "2027" => Ok ( Edition :: Edition2027 ) ,
98
114
_ => Err ( ( ) ) ,
99
115
}
100
116
}
0 commit comments