@@ -14,7 +14,9 @@ pub struct Encoding {
14
14
}
15
15
16
16
impl Encoding {
17
- pub fn from_str ( code : & ' static str ) -> Encoding {
17
+ /// Constructs an `Encoding` from its string representation.
18
+ /// Unsafe because the caller must ensure the string is a valid encoding.
19
+ pub unsafe fn from_str ( code : & ' static str ) -> Encoding {
18
20
Encoding { code : code }
19
21
}
20
22
@@ -61,7 +63,7 @@ pub unsafe trait Encode : PhantomFn<Self> {
61
63
macro_rules! encode_impls {
62
64
( $( $t: ty : $s: expr, ) * ) => ( $(
63
65
unsafe impl Encode for $t {
64
- fn encode( ) -> Encoding { Encoding :: from_str( $s) }
66
+ fn encode( ) -> Encoding { unsafe { Encoding :: from_str( $s) } }
65
67
}
66
68
) * ) ;
67
69
}
@@ -108,27 +110,27 @@ macro_rules! encode_message_impl {
108
110
) ;
109
111
( $code: expr, $name: ident, $( $t: ident) ,* ) => (
110
112
unsafe impl <' a $( , $t) * > $crate:: Encode for & ' a $name<$( $t) ,* > {
111
- fn encode( ) -> Encoding { Encoding :: from_str( $code) }
113
+ fn encode( ) -> Encoding { unsafe { Encoding :: from_str( $code) } }
112
114
}
113
115
114
116
unsafe impl <' a $( , $t) * > $crate:: Encode for & ' a mut $name<$( $t) ,* > {
115
- fn encode( ) -> Encoding { Encoding :: from_str( $code) }
117
+ fn encode( ) -> Encoding { unsafe { Encoding :: from_str( $code) } }
116
118
}
117
119
118
120
unsafe impl <' a $( , $t) * > $crate:: Encode for Option <& ' a $name<$( $t) ,* >> {
119
- fn encode( ) -> Encoding { Encoding :: from_str( $code) }
121
+ fn encode( ) -> Encoding { unsafe { Encoding :: from_str( $code) } }
120
122
}
121
123
122
124
unsafe impl <' a $( , $t) * > $crate:: Encode for Option <& ' a mut $name<$( $t) ,* >> {
123
- fn encode( ) -> Encoding { Encoding :: from_str( $code) }
125
+ fn encode( ) -> Encoding { unsafe { Encoding :: from_str( $code) } }
124
126
}
125
127
126
128
unsafe impl <$( $t) ,* > $crate:: Encode for * const $name<$( $t) ,* > {
127
- fn encode( ) -> Encoding { Encoding :: from_str( $code) }
129
+ fn encode( ) -> Encoding { unsafe { Encoding :: from_str( $code) } }
128
130
}
129
131
130
132
unsafe impl <$( $t) ,* > $crate:: Encode for * mut $name<$( $t) ,* > {
131
- fn encode( ) -> Encoding { Encoding :: from_str( $code) }
133
+ fn encode( ) -> Encoding { unsafe { Encoding :: from_str( $code) } }
132
134
}
133
135
) ;
134
136
}
0 commit comments