@@ -1106,13 +1106,13 @@ fn search_dictionary<'a>(dict: &'a Dictionary, name: &Name) -> Option<&'a Dictio
1106
1106
dict. iter ( ) . find ( |& item| item. name == * name)
1107
1107
}
1108
1108
1109
- fn parse_number ( default_base : u32 , word : & str ) -> Option < Cell > {
1109
+ fn parse_number ( default_base : u32 , word : & [ Byte ] ) -> Option < Cell > {
1110
1110
if word. is_empty ( ) {
1111
1111
return None ;
1112
1112
}
1113
1113
1114
1114
let mut has_base_indicator = true ;
1115
- let base = match word. as_bytes ( ) . first ( ) ? {
1115
+ let base = match word. first ( ) ? {
1116
1116
b'#' => 10 ,
1117
1117
b'$' => 16 ,
1118
1118
b'%' => 2 ,
@@ -1124,7 +1124,7 @@ fn parse_number(default_base: u32, word: &str) -> Option<Cell> {
1124
1124
1125
1125
let digits = word. split_at ( if has_base_indicator { 1 } else { 0 } ) . 1 ;
1126
1126
1127
- match Cell :: from_str_radix ( digits, base) {
1127
+ match Cell :: from_str_radix ( core :: str :: from_utf8 ( digits) . unwrap ( ) , base) {
1128
1128
Ok ( x) => Some ( x) ,
1129
1129
Err ( e) => match e. kind ( ) {
1130
1130
std:: num:: IntErrorKind :: PosOverflow | std:: num:: IntErrorKind :: NegOverflow => {
@@ -1278,19 +1278,19 @@ impl<'a> Environment<'a> {
1278
1278
self . input_buffer [ line. len ( ) ..] . fill ( 0 ) ;
1279
1279
1280
1280
' empty_input_buffer: loop {
1281
- let token = self . next_token ( USUAL_LEADING_DELIMITERS_TO_IGNORE , b' ' ) ;
1281
+ let token = self
1282
+ . next_token ( USUAL_LEADING_DELIMITERS_TO_IGNORE , b' ' )
1283
+ . to_owned ( ) ;
1282
1284
1283
1285
if token. is_empty ( ) {
1284
1286
break ' empty_input_buffer;
1285
1287
}
1286
1288
1287
- let token = core:: str:: from_utf8 ( token) . unwrap ( ) . to_owned ( ) ;
1288
-
1289
1289
self . handle_token ( & token) ;
1290
1290
}
1291
1291
}
1292
1292
1293
- fn handle_token ( & mut self , token : & str ) {
1293
+ fn handle_token ( & mut self , token : & [ Byte ] ) {
1294
1294
match parse_number ( self . base as u32 , token) {
1295
1295
Some ( number) => self . handle_number_token ( number) ,
1296
1296
_ => self . handle_text_token ( token) ,
@@ -1306,9 +1306,8 @@ impl<'a> Environment<'a> {
1306
1306
}
1307
1307
}
1308
1308
1309
- fn handle_text_token ( & mut self , token : & str ) {
1310
- let dict_entry =
1311
- search_dictionary ( & self . dictionary , & Name :: from_ascii ( token. as_bytes ( ) ) ) . unwrap ( ) ;
1309
+ fn handle_text_token ( & mut self , token : & [ Byte ] ) {
1310
+ let dict_entry = search_dictionary ( & self . dictionary , & Name :: from_ascii ( token) ) . unwrap ( ) ;
1312
1311
1313
1312
if self . compile_mode ( ) && !dict_entry. immediate {
1314
1313
let operation = ForthOperation :: CallEntry ( dict_entry) ;
0 commit comments