@@ -4,27 +4,27 @@ use crate::{
44 DecodeValue , EncodeValue , Error , FixedTag , Header , Length , Reader , Result , Tag , Tagged , Writer ,
55 asn1:: AnyRef , ord:: OrdIsValueOrd ,
66} ;
7- use const_oid:: ObjectIdentifier ;
7+ use const_oid:: { ObjectIdentifier , ObjectIdentifierRef } ;
88
99#[ cfg( feature = "alloc" ) ]
1010use super :: Any ;
1111
12- impl < ' a > DecodeValue < ' a > for ObjectIdentifier {
12+ impl < ' a , const MAX_SIZE : usize > DecodeValue < ' a > for ObjectIdentifier < MAX_SIZE > {
1313 type Error = Error ;
1414
1515 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 ] ;
1717 let slice = buf
1818 . get_mut ( ..header. length . try_into ( ) ?)
1919 . ok_or_else ( || Self :: TAG . length_error ( ) ) ?;
2020
2121 let actual_len = reader. read_into ( slice) ?. len ( ) ;
2222 debug_assert_eq ! ( actual_len, header. length. try_into( ) ?) ;
23- Ok ( Self :: from_bytes ( slice) ?)
23+ Ok ( ObjectIdentifierRef :: from_bytes ( slice) ? . try_into ( ) ?)
2424 }
2525}
2626
27- impl EncodeValue for ObjectIdentifier {
27+ impl < const MAX_SIZE : usize > EncodeValue for ObjectIdentifier < MAX_SIZE > {
2828 fn value_len ( & self ) -> Result < Length > {
2929 Length :: try_from ( self . as_bytes ( ) . len ( ) )
3030 }
@@ -34,14 +34,14 @@ impl EncodeValue for ObjectIdentifier {
3434 }
3535}
3636
37- impl FixedTag for ObjectIdentifier {
37+ impl < const MAX_SIZE : usize > FixedTag for ObjectIdentifier < MAX_SIZE > {
3838 const TAG : Tag = Tag :: ObjectIdentifier ;
3939}
4040
41- impl OrdIsValueOrd for ObjectIdentifier { }
41+ impl < const MAX_SIZE : usize > OrdIsValueOrd for ObjectIdentifier < MAX_SIZE > { }
4242
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 > {
4545 // Note: ensuring an infallible conversion is possible relies on the
4646 // invariant that `const_oid::MAX_LEN <= Length::max()`.
4747 //
@@ -56,18 +56,18 @@ impl<'a> From<&'a ObjectIdentifier> for AnyRef<'a> {
5656}
5757
5858#[ 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 {
6161 AnyRef :: from ( & oid) . into ( )
6262 }
6363}
6464
65- impl TryFrom < AnyRef < ' _ > > for ObjectIdentifier {
65+ impl < const MAX_SIZE : usize > TryFrom < AnyRef < ' _ > > for ObjectIdentifier < MAX_SIZE > {
6666 type Error = Error ;
6767
68- fn try_from ( any : AnyRef < ' _ > ) -> Result < ObjectIdentifier > {
68+ fn try_from ( any : AnyRef < ' _ > ) -> Result < ObjectIdentifier < MAX_SIZE > > {
6969 any. tag ( ) . assert_eq ( Tag :: ObjectIdentifier ) ?;
70- Ok ( ObjectIdentifier :: from_bytes ( any. value ( ) ) ?)
70+ Ok ( ObjectIdentifierRef :: from_bytes ( any. value ( ) ) ? . try_into ( ) ?)
7171 }
7272}
7373
0 commit comments