@@ -4,27 +4,27 @@ use crate::{
4
4
DecodeValue , EncodeValue , Error , FixedTag , Header , Length , Reader , Result , Tag , Tagged , Writer ,
5
5
asn1:: AnyRef , ord:: OrdIsValueOrd ,
6
6
} ;
7
- use const_oid:: ObjectIdentifier ;
7
+ use const_oid:: { ObjectIdentifier , ObjectIdentifierRef } ;
8
8
9
9
#[ cfg( feature = "alloc" ) ]
10
10
use super :: Any ;
11
11
12
- impl < ' a > DecodeValue < ' a > for ObjectIdentifier {
12
+ impl < ' a , const MAX_SIZE : usize > DecodeValue < ' a > for ObjectIdentifier < MAX_SIZE > {
13
13
type Error = Error ;
14
14
15
15
fn decode_value < R : Reader < ' a > > ( reader : & mut R , header : Header ) -> Result < Self > {
16
- let mut buf = [ 0u8 ; ObjectIdentifier :: MAX_SIZE ] ;
16
+ let mut buf = [ 0u8 ; MAX_SIZE ] ;
17
17
let slice = buf
18
18
. get_mut ( ..header. length . try_into ( ) ?)
19
19
. ok_or_else ( || Self :: TAG . length_error ( ) ) ?;
20
20
21
21
let actual_len = reader. read_into ( slice) ?. len ( ) ;
22
22
debug_assert_eq ! ( actual_len, header. length. try_into( ) ?) ;
23
- Ok ( Self :: from_bytes ( slice) ?)
23
+ Ok ( ObjectIdentifierRef :: from_bytes ( slice) ? . try_into ( ) ?)
24
24
}
25
25
}
26
26
27
- impl EncodeValue for ObjectIdentifier {
27
+ impl < const MAX_SIZE : usize > EncodeValue for ObjectIdentifier < MAX_SIZE > {
28
28
fn value_len ( & self ) -> Result < Length > {
29
29
Length :: try_from ( self . as_bytes ( ) . len ( ) )
30
30
}
@@ -34,14 +34,14 @@ impl EncodeValue for ObjectIdentifier {
34
34
}
35
35
}
36
36
37
- impl FixedTag for ObjectIdentifier {
37
+ impl < const MAX_SIZE : usize > FixedTag for ObjectIdentifier < MAX_SIZE > {
38
38
const TAG : Tag = Tag :: ObjectIdentifier ;
39
39
}
40
40
41
- impl OrdIsValueOrd for ObjectIdentifier { }
41
+ impl < const MAX_SIZE : usize > OrdIsValueOrd for ObjectIdentifier < MAX_SIZE > { }
42
42
43
- impl < ' a > From < & ' a ObjectIdentifier > for AnyRef < ' a > {
44
- fn from ( oid : & ' a ObjectIdentifier ) -> AnyRef < ' a > {
43
+ impl < ' a , const MAX_SIZE : usize > From < & ' a ObjectIdentifier < MAX_SIZE > > for AnyRef < ' a > {
44
+ fn from ( oid : & ' a ObjectIdentifier < MAX_SIZE > ) -> AnyRef < ' a > {
45
45
// Note: ensuring an infallible conversion is possible relies on the
46
46
// invariant that `const_oid::MAX_LEN <= Length::max()`.
47
47
//
@@ -56,18 +56,18 @@ impl<'a> From<&'a ObjectIdentifier> for AnyRef<'a> {
56
56
}
57
57
58
58
#[ cfg( feature = "alloc" ) ]
59
- impl From < ObjectIdentifier > for Any {
60
- fn from ( oid : ObjectIdentifier ) -> Any {
59
+ impl < const MAX_SIZE : usize > From < ObjectIdentifier < MAX_SIZE > > for Any {
60
+ fn from ( oid : ObjectIdentifier < MAX_SIZE > ) -> Any {
61
61
AnyRef :: from ( & oid) . into ( )
62
62
}
63
63
}
64
64
65
- impl TryFrom < AnyRef < ' _ > > for ObjectIdentifier {
65
+ impl < const MAX_SIZE : usize > TryFrom < AnyRef < ' _ > > for ObjectIdentifier < MAX_SIZE > {
66
66
type Error = Error ;
67
67
68
- fn try_from ( any : AnyRef < ' _ > ) -> Result < ObjectIdentifier > {
68
+ fn try_from ( any : AnyRef < ' _ > ) -> Result < ObjectIdentifier < MAX_SIZE > > {
69
69
any. tag ( ) . assert_eq ( Tag :: ObjectIdentifier ) ?;
70
- Ok ( ObjectIdentifier :: from_bytes ( any. value ( ) ) ?)
70
+ Ok ( ObjectIdentifierRef :: from_bytes ( any. value ( ) ) ? . try_into ( ) ?)
71
71
}
72
72
}
73
73
0 commit comments