File tree 5 files changed +34
-34
lines changed
5 files changed +34
-34
lines changed Original file line number Diff line number Diff line change 1
1
use header:: { Header , HeaderFormat } ;
2
2
use std:: fmt:: { mod, Show } ;
3
- use super :: { from_comma_delimited, fmt_comma_delimited} ;
4
3
use std:: str:: FromStr ;
4
+ use super :: util:: { from_comma_delimited, fmt_comma_delimited} ;
5
5
6
6
/// The `Connection` header.
7
7
#[ deriving( Clone , PartialEq , Show ) ]
Original file line number Diff line number Diff line change @@ -21,9 +21,6 @@ pub use self::user_agent::UserAgent;
21
21
pub use self :: server:: Server ;
22
22
pub use self :: set_cookie:: SetCookie ;
23
23
24
- use std:: fmt:: { mod, Show } ;
25
- use std:: str:: { FromStr , from_utf8} ;
26
-
27
24
macro_rules! bench_header(
28
25
( $name: ident, $ty: ty, $value: expr) => {
29
26
#[ cfg( test) ]
@@ -105,30 +102,3 @@ pub mod upgrade;
105
102
pub mod user_agent;
106
103
107
104
pub mod util;
108
-
109
- fn from_comma_delimited < T : FromStr > ( raw : & [ Vec < u8 > ] ) -> Option < Vec < T > > {
110
- if raw. len ( ) != 1 {
111
- return None ;
112
- }
113
- // we JUST checked that raw.len() == 1, so raw[0] WILL exist.
114
- match from_utf8 ( unsafe { raw. as_slice ( ) . unsafe_get ( 0 ) . as_slice ( ) } ) {
115
- Some ( s) => {
116
- Some ( s. as_slice ( )
117
- . split ( [ ',' , ' ' ] . as_slice ( ) )
118
- . filter_map ( from_str)
119
- . collect ( ) )
120
- }
121
- None => None
122
- }
123
- }
124
-
125
- fn fmt_comma_delimited < T : Show > ( fmt : & mut fmt:: Formatter , parts : & [ T ] ) -> fmt:: Result {
126
- let last = parts. len ( ) - 1 ;
127
- for ( i, part) in parts. iter ( ) . enumerate ( ) {
128
- try!( part. fmt ( fmt) ) ;
129
- if i < last {
130
- try!( ", " . fmt ( fmt) ) ;
131
- }
132
- }
133
- Ok ( ( ) )
134
- }
Original file line number Diff line number Diff line change 1
1
use header:: { Header , HeaderFormat } ;
2
2
use std:: fmt;
3
3
use std:: str:: FromStr ;
4
- use super :: { from_comma_delimited, fmt_comma_delimited} ;
4
+ use super :: util :: { from_comma_delimited, fmt_comma_delimited} ;
5
5
6
6
/// The `Transfer-Encoding` header.
7
7
///
Original file line number Diff line number Diff line change 1
1
use header:: { Header , HeaderFormat } ;
2
2
use std:: fmt:: { mod, Show } ;
3
- use super :: { from_comma_delimited, fmt_comma_delimited} ;
4
3
use std:: str:: FromStr ;
4
+ use super :: util:: { from_comma_delimited, fmt_comma_delimited} ;
5
5
6
6
/// The `Upgrade` header.
7
7
#[ deriving( Clone , PartialEq , Show ) ]
Original file line number Diff line number Diff line change 1
1
//! Utility functions for Header implementations.
2
2
3
3
use std:: str:: { FromStr , from_utf8} ;
4
+ use std:: fmt:: { mod, Show } ;
4
5
5
- /// Utility function that reads a single raw string when parsing a header
6
+ /// Reads a single raw string when parsing a header
6
7
pub fn from_one_raw_str < T : FromStr > ( raw : & [ Vec < u8 > ] ) -> Option < T > {
7
8
if raw. len ( ) != 1 {
8
9
return None ;
@@ -13,3 +14,32 @@ pub fn from_one_raw_str<T: FromStr>(raw: &[Vec<u8>]) -> Option<T> {
13
14
None => None
14
15
}
15
16
}
17
+
18
+ /// Reads a comma-delimited raw string into a Vec.
19
+ pub fn from_comma_delimited < T : FromStr > ( raw : & [ Vec < u8 > ] ) -> Option < Vec < T > > {
20
+ if raw. len ( ) != 1 {
21
+ return None ;
22
+ }
23
+ // we JUST checked that raw.len() == 1, so raw[0] WILL exist.
24
+ match from_utf8 ( unsafe { raw. as_slice ( ) . unsafe_get ( 0 ) . as_slice ( ) } ) {
25
+ Some ( s) => {
26
+ Some ( s. as_slice ( )
27
+ . split ( [ ',' , ' ' ] . as_slice ( ) )
28
+ . filter_map ( from_str)
29
+ . collect ( ) )
30
+ }
31
+ None => None
32
+ }
33
+ }
34
+
35
+ /// Format an array into a comma-delimited string.
36
+ pub fn fmt_comma_delimited < T : Show > ( fmt : & mut fmt:: Formatter , parts : & [ T ] ) -> fmt:: Result {
37
+ let last = parts. len ( ) - 1 ;
38
+ for ( i, part) in parts. iter ( ) . enumerate ( ) {
39
+ try!( part. fmt ( fmt) ) ;
40
+ if i < last {
41
+ try!( ", " . fmt ( fmt) ) ;
42
+ }
43
+ }
44
+ Ok ( ( ) )
45
+ }
You can’t perform that action at this time.
0 commit comments