@@ -38,37 +38,6 @@ pub fn next_utf8(text: &[u8], i: usize) -> usize {
38
38
i + inc
39
39
}
40
40
41
- /// Encode the given Unicode character to `dst` as a single UTF-8 sequence.
42
- ///
43
- /// If `dst` is not long enough, then `None` is returned. Otherwise, the number
44
- /// of bytes written is returned.
45
- #[ allow( dead_code) ]
46
- #[ inline]
47
- pub fn encode_utf8 ( character : char , dst : & mut [ u8 ] ) -> Option < usize > {
48
- let code = character as u32 ;
49
- if code <= 0x7F && !dst. is_empty ( ) {
50
- dst[ 0 ] = code as u8 ;
51
- Some ( 1 )
52
- } else if code <= 0x7FF && dst. len ( ) >= 2 {
53
- dst[ 0 ] = ( code >> 6 & 0x1F ) as u8 | TAG_TWO ;
54
- dst[ 1 ] = ( code & 0x3F ) as u8 | TAG_CONT ;
55
- Some ( 2 )
56
- } else if code <= 0xFFFF && dst. len ( ) >= 3 {
57
- dst[ 0 ] = ( code >> 12 & 0x0F ) as u8 | TAG_THREE ;
58
- dst[ 1 ] = ( code >> 6 & 0x3F ) as u8 | TAG_CONT ;
59
- dst[ 2 ] = ( code & 0x3F ) as u8 | TAG_CONT ;
60
- Some ( 3 )
61
- } else if dst. len ( ) >= 4 {
62
- dst[ 0 ] = ( code >> 18 & 0x07 ) as u8 | TAG_FOUR ;
63
- dst[ 1 ] = ( code >> 12 & 0x3F ) as u8 | TAG_CONT ;
64
- dst[ 2 ] = ( code >> 6 & 0x3F ) as u8 | TAG_CONT ;
65
- dst[ 3 ] = ( code & 0x3F ) as u8 | TAG_CONT ;
66
- Some ( 4 )
67
- } else {
68
- None
69
- }
70
- }
71
-
72
41
/// Decode a single UTF-8 sequence into a single Unicode codepoint from `src`.
73
42
///
74
43
/// If no valid UTF-8 sequence could be found, then `None` is returned.
@@ -184,14 +153,14 @@ mod tests {
184
153
185
154
use super :: {
186
155
TAG_CONT , TAG_TWO , TAG_THREE , TAG_FOUR ,
187
- decode_utf8, decode_last_utf8, encode_utf8 ,
156
+ decode_utf8, decode_last_utf8,
188
157
} ;
189
158
190
159
#[ test]
191
160
fn prop_roundtrip ( ) {
192
161
fn p ( given_cp : char ) -> bool {
193
162
let mut tmp = [ 0 ; 4 ] ;
194
- let encoded_len = encode_utf8 ( given_cp , & mut tmp) . unwrap ( ) ;
163
+ let encoded_len = given_cp . encode_utf8 ( & mut tmp) . len ( ) ;
195
164
let ( got_cp, got_len) = decode_utf8 ( & tmp[ ..encoded_len] ) . unwrap ( ) ;
196
165
encoded_len == got_len && given_cp == got_cp
197
166
}
@@ -202,7 +171,7 @@ mod tests {
202
171
fn prop_roundtrip_last ( ) {
203
172
fn p ( given_cp : char ) -> bool {
204
173
let mut tmp = [ 0 ; 4 ] ;
205
- let encoded_len = encode_utf8 ( given_cp , & mut tmp) . unwrap ( ) ;
174
+ let encoded_len = given_cp . encode_utf8 ( & mut tmp) . len ( ) ;
206
175
let ( got_cp, got_len) =
207
176
decode_last_utf8 ( & tmp[ ..encoded_len] ) . unwrap ( ) ;
208
177
encoded_len == got_len && given_cp == got_cp
@@ -214,7 +183,7 @@ mod tests {
214
183
fn prop_encode_matches_std ( ) {
215
184
fn p ( cp : char ) -> bool {
216
185
let mut got = [ 0 ; 4 ] ;
217
- let n = encode_utf8 ( cp , & mut got) . unwrap ( ) ;
186
+ let n = cp . encode_utf8 ( & mut got) . len ( ) ;
218
187
let expected = cp. to_string ( ) ;
219
188
& got[ ..n] == expected. as_bytes ( )
220
189
}
@@ -225,7 +194,7 @@ mod tests {
225
194
fn prop_decode_matches_std ( ) {
226
195
fn p ( given_cp : char ) -> bool {
227
196
let mut tmp = [ 0 ; 4 ] ;
228
- let n = encode_utf8 ( given_cp , & mut tmp) . unwrap ( ) ;
197
+ let n = given_cp . encode_utf8 ( & mut tmp) . len ( ) ;
229
198
let ( got_cp, _) = decode_utf8 ( & tmp[ ..n] ) . unwrap ( ) ;
230
199
let expected_cp =
231
200
str:: from_utf8 ( & tmp[ ..n] ) . unwrap ( ) . chars ( ) . next ( ) . unwrap ( ) ;
@@ -238,7 +207,7 @@ mod tests {
238
207
fn prop_decode_last_matches_std ( ) {
239
208
fn p ( given_cp : char ) -> bool {
240
209
let mut tmp = [ 0 ; 4 ] ;
241
- let n = encode_utf8 ( given_cp , & mut tmp) . unwrap ( ) ;
210
+ let n = given_cp . encode_utf8 ( & mut tmp) . len ( ) ;
242
211
let ( got_cp, _) = decode_last_utf8 ( & tmp[ ..n] ) . unwrap ( ) ;
243
212
let expected_cp =
244
213
str:: from_utf8 ( & tmp[ ..n] ) . unwrap ( )
0 commit comments