@@ -230,6 +230,8 @@ impl Config {
230
230
self . book . update_value ( key, value) ;
231
231
} else if let Some ( key) = index. strip_prefix ( "build." ) {
232
232
self . build . update_value ( key, value) ;
233
+ } else if let Some ( key) = index. strip_prefix ( "rust." ) {
234
+ self . rust . update_value ( key, value) ;
233
235
} else {
234
236
self . rest . insert ( index, value) ;
235
237
}
@@ -1111,6 +1113,22 @@ mod tests {
1111
1113
assert_eq ! ( got, value) ;
1112
1114
}
1113
1115
1116
+ #[ test]
1117
+ fn set_special_tables ( ) {
1118
+ let mut cfg = Config :: default ( ) ;
1119
+ assert_eq ! ( cfg. book. title, None ) ;
1120
+ cfg. set ( "book.title" , "my title" ) . unwrap ( ) ;
1121
+ assert_eq ! ( cfg. book. title, Some ( "my title" . to_string( ) ) ) ;
1122
+
1123
+ assert_eq ! ( & cfg. build. build_dir, Path :: new( "book" ) ) ;
1124
+ cfg. set ( "build.build-dir" , "some-directory" ) . unwrap ( ) ;
1125
+ assert_eq ! ( & cfg. build. build_dir, Path :: new( "some-directory" ) ) ;
1126
+
1127
+ assert_eq ! ( cfg. rust. edition, None ) ;
1128
+ cfg. set ( "rust.edition" , "2024" ) . unwrap ( ) ;
1129
+ assert_eq ! ( cfg. rust. edition, Some ( RustEdition :: E2024 ) ) ;
1130
+ }
1131
+
1114
1132
#[ test]
1115
1133
fn parse_env_vars ( ) {
1116
1134
let inputs = vec ! [
0 commit comments