File tree 4 files changed +31
-9
lines changed
4 files changed +31
-9
lines changed Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ name = "idna"
3
3
version = " 0.3.0"
4
4
authors = [" The rust-url developers" ]
5
5
description = " IDNA (Internationalizing Domain Names in Applications) and Punycode."
6
+ categories = [" no_std" ]
6
7
repository = " https://github.com/servo/rust-url/"
7
8
license = " MIT OR Apache-2.0"
8
9
autotests = false
@@ -12,6 +13,11 @@ rust-version = "1.51"
12
13
[lib ]
13
14
doctest = false
14
15
16
+ [features ]
17
+ default = [" std" ]
18
+ std = [" alloc" ]
19
+ alloc = []
20
+
15
21
[[test ]]
16
22
name = " tests"
17
23
harness = false
@@ -26,8 +32,8 @@ tester = "0.9"
26
32
serde_json = " 1.0"
27
33
28
34
[dependencies ]
29
- unicode-bidi = " 0.3"
30
- unicode-normalization = " 0.1.17"
35
+ unicode-bidi = { version = " 0.3.7 " , default-features = false }
36
+ unicode-normalization = { version = " 0.1.17" , default-features = false }
31
37
32
38
[[bench ]]
33
39
name = " all"
Original file line number Diff line number Diff line change 31
31
//! > This document specifies a mechanism
32
32
//! > that minimizes the impact of this transition for client software,
33
33
//! > allowing client software to access domains that are valid under either system.
34
+ #![ no_std]
35
+
36
+ // For forwards compatibility
37
+ #[ cfg( feature = "std" ) ]
38
+ extern crate std;
39
+
40
+ extern crate alloc;
41
+
42
+ #[ cfg( not( feature = "alloc" ) ) ]
43
+ compile_error ! ( "the `alloc` feature must currently be enabled" ) ;
34
44
35
45
#[ cfg( test) ]
36
46
#[ macro_use]
37
47
extern crate assert_matches;
38
48
49
+ use alloc:: string:: String ;
50
+
39
51
pub mod punycode;
40
52
mod uts46;
41
53
Original file line number Diff line number Diff line change 13
13
//! `encode_str` and `decode_to_string` provide convenience wrappers
14
14
//! that convert from and to Rust’s UTF-8 based `str` and `String` types.
15
15
16
- use std:: char;
17
- use std:: u32;
16
+ use alloc:: { string:: String , vec:: Vec } ;
17
+ use core:: char;
18
+ use core:: u32;
18
19
19
20
// Bootstring parameters for Punycode
20
21
static BASE : u32 = 36 ;
@@ -168,7 +169,7 @@ impl Decoder {
168
169
}
169
170
170
171
pub ( crate ) struct Decode < ' a > {
171
- base : std :: str:: Chars < ' a > ,
172
+ base : core :: str:: Chars < ' a > ,
172
173
pub ( crate ) insertions : & ' a [ ( usize , char ) ] ,
173
174
inserted : usize ,
174
175
position : usize ,
Original file line number Diff line number Diff line change 11
11
12
12
use self :: Mapping :: * ;
13
13
use crate :: punycode;
14
- use std:: { error:: Error as StdError , fmt} ;
14
+
15
+ use alloc:: string:: String ;
16
+ use core:: fmt;
15
17
use unicode_bidi:: { bidi_class, BidiClass } ;
16
18
use unicode_normalization:: char:: is_combining_mark;
17
19
use unicode_normalization:: { is_nfc, UnicodeNormalization } ;
@@ -70,10 +72,10 @@ fn find_char(codepoint: char) -> &'static Mapping {
70
72
}
71
73
72
74
struct Mapper < ' a > {
73
- chars : std :: str:: Chars < ' a > ,
75
+ chars : core :: str:: Chars < ' a > ,
74
76
config : Config ,
75
77
errors : & ' a mut Errors ,
76
- slice : Option < std :: str:: Chars < ' static > > ,
78
+ slice : Option < core :: str:: Chars < ' static > > ,
77
79
}
78
80
79
81
impl < ' a > Iterator for Mapper < ' a > {
@@ -708,7 +710,8 @@ impl From<Errors> for Result<(), Errors> {
708
710
}
709
711
}
710
712
711
- impl StdError for Errors { }
713
+ #[ cfg( feature = "std" ) ]
714
+ impl std:: error:: Error for Errors { }
712
715
713
716
impl fmt:: Display for Errors {
714
717
fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
You can’t perform that action at this time.
0 commit comments