10
10
//
11
11
// Original authors: alexchrichton, bluss
12
12
13
- use std:: ptr;
14
-
15
13
// UTF-8 ranges and tags for encoding characters
16
14
const TAG_CONT : u8 = 0b1000_0000 ;
17
15
const TAG_TWO_B : u8 = 0b1100_0000 ;
@@ -24,11 +22,6 @@ const MAX_THREE_B: u32 = 0x10000;
24
22
/// Placeholder
25
23
pub struct EncodeUtf8Error ;
26
24
27
- #[ inline]
28
- unsafe fn write ( ptr : * mut u8 , index : usize , byte : u8 ) {
29
- ptr:: write ( ptr. add ( index) , byte)
30
- }
31
-
32
25
/// Encode a char into buf using UTF-8.
33
26
///
34
27
/// On success, return the byte length of the encoding (1, 2, 3 or 4).<br>
@@ -40,22 +33,22 @@ pub unsafe fn encode_utf8(ch: char, ptr: *mut u8, len: usize) -> Result<usize, E
40
33
{
41
34
let code = ch as u32 ;
42
35
if code < MAX_ONE_B && len >= 1 {
43
- write ( ptr, 0 , code as u8 ) ;
36
+ ptr. add ( 0 ) . write ( code as u8 ) ;
44
37
return Ok ( 1 ) ;
45
38
} else if code < MAX_TWO_B && len >= 2 {
46
- write ( ptr, 0 , ( code >> 6 & 0x1F ) as u8 | TAG_TWO_B ) ;
47
- write ( ptr, 1 , ( code & 0x3F ) as u8 | TAG_CONT ) ;
39
+ ptr. add ( 0 ) . write ( ( code >> 6 & 0x1F ) as u8 | TAG_TWO_B ) ;
40
+ ptr. add ( 1 ) . write ( ( code & 0x3F ) as u8 | TAG_CONT ) ;
48
41
return Ok ( 2 ) ;
49
42
} else if code < MAX_THREE_B && len >= 3 {
50
- write ( ptr, 0 , ( code >> 12 & 0x0F ) as u8 | TAG_THREE_B ) ;
51
- write ( ptr, 1 , ( code >> 6 & 0x3F ) as u8 | TAG_CONT ) ;
52
- write ( ptr, 2 , ( code & 0x3F ) as u8 | TAG_CONT ) ;
43
+ ptr. add ( 0 ) . write ( ( code >> 12 & 0x0F ) as u8 | TAG_THREE_B ) ;
44
+ ptr. add ( 1 ) . write ( ( code >> 6 & 0x3F ) as u8 | TAG_CONT ) ;
45
+ ptr. add ( 2 ) . write ( ( code & 0x3F ) as u8 | TAG_CONT ) ;
53
46
return Ok ( 3 ) ;
54
47
} else if len >= 4 {
55
- write ( ptr, 0 , ( code >> 18 & 0x07 ) as u8 | TAG_FOUR_B ) ;
56
- write ( ptr, 1 , ( code >> 12 & 0x3F ) as u8 | TAG_CONT ) ;
57
- write ( ptr, 2 , ( code >> 6 & 0x3F ) as u8 | TAG_CONT ) ;
58
- write ( ptr, 3 , ( code & 0x3F ) as u8 | TAG_CONT ) ;
48
+ ptr. add ( 0 ) . write ( ( code >> 18 & 0x07 ) as u8 | TAG_FOUR_B ) ;
49
+ ptr. add ( 1 ) . write ( ( code >> 12 & 0x3F ) as u8 | TAG_CONT ) ;
50
+ ptr. add ( 2 ) . write ( ( code >> 6 & 0x3F ) as u8 | TAG_CONT ) ;
51
+ ptr. add ( 3 ) . write ( ( code & 0x3F ) as u8 | TAG_CONT ) ;
59
52
return Ok ( 4 ) ;
60
53
} ;
61
54
Err ( EncodeUtf8Error )
0 commit comments