11use crate :: tree_hash:: vec_tree_hash_root;
22use crate :: Error ;
3- use derivative:: Derivative ;
43use serde:: Deserialize ;
54use serde_derive:: Serialize ;
65use std:: marker:: PhantomData ;
@@ -45,12 +44,10 @@ pub use typenum;
4544/// let err = FixedVector::<_, typenum::U5>::try_from(base.clone()).unwrap_err();
4645/// assert_eq!(err, Error::OutOfBounds { i: 4, len: 5 });
4746/// ```
48- #[ derive( Clone , Serialize , Derivative ) ]
49- #[ derivative( Debug = "transparent" ) ]
47+ #[ derive( Clone , Serialize ) ]
5048#[ serde( transparent) ]
5149pub struct FixedVector < T , N > {
5250 vec : Vec < T > ,
53- #[ derivative( Debug = "ignore" ) ]
5451 _phantom : PhantomData < N > ,
5552}
5653
@@ -67,6 +64,12 @@ impl<T: std::hash::Hash, N> std::hash::Hash for FixedVector<T, N> {
6764 }
6865}
6966
67+ impl < T : std:: fmt:: Debug , N > std:: fmt:: Debug for FixedVector < T , N > {
68+ fn fmt ( & self , f : & mut std:: fmt:: Formatter ) -> std:: fmt:: Result {
69+ self . vec . fmt ( f)
70+ }
71+ }
72+
7073impl < T , N : Unsigned > FixedVector < T , N > {
7174 /// Returns `Ok` if the given `vec` equals the fixed length of `Self`. Otherwise returns
7275 /// `Err`.
@@ -571,4 +574,12 @@ mod test {
571574 let result: Result < FixedVector < u64 , U4 > , _ > = serde_json:: from_value ( json) ;
572575 assert ! ( result. is_ok( ) ) ;
573576 }
577+
578+ #[ test]
579+ fn debug_transparent ( ) {
580+ let vec: FixedVector < u64 , U4 > = FixedVector :: try_from ( vec ! [ 1 , 2 , 3 , 4 ] ) . unwrap ( ) ;
581+ let debug_output = format ! ( "{:?}" , vec) ;
582+
583+ assert_eq ! ( debug_output, "[1, 2, 3, 4]" ) ;
584+ }
574585}
0 commit comments