@@ -30,12 +30,12 @@ fn validate_magic(wasm: &[u8]) -> Result<usize, TwasmError> {
30
30
Ok ( TWASM_MAGIC . len ( ) )
31
31
}
32
32
33
- #[ derive( Debug , PartialEq ) ]
33
+ #[ derive( Debug ) ]
34
34
pub enum TwasmError {
35
35
InvalidMagic ,
36
36
InvalidVersion ,
37
37
InvalidPadding ,
38
- InvalidArchive ,
38
+ InvalidArchive ( rkyv :: rancor :: Error ) ,
39
39
}
40
40
41
41
impl Display for TwasmError {
@@ -44,7 +44,7 @@ impl Display for TwasmError {
44
44
TwasmError :: InvalidMagic => write ! ( f, "Invalid twasm: invalid magic number" ) ,
45
45
TwasmError :: InvalidVersion => write ! ( f, "Invalid twasm: invalid version" ) ,
46
46
TwasmError :: InvalidPadding => write ! ( f, "Invalid twasm: invalid padding" ) ,
47
- TwasmError :: InvalidArchive => write ! ( f, "Invalid twasm: invalid archive" ) ,
47
+ TwasmError :: InvalidArchive ( e ) => write ! ( f, "Invalid twasm: {}" , e ) ,
48
48
}
49
49
}
50
50
}
@@ -58,9 +58,8 @@ impl TinyWasmModule {
58
58
/// Creates a `TinyWasmModule` from a slice of bytes.
59
59
pub fn from_twasm ( wasm : & [ u8 ] ) -> Result < TinyWasmModule , TwasmError > {
60
60
let len = validate_magic ( wasm) ?;
61
- let root =
62
- access :: < Archived < Self > , rkyv:: rancor:: Error > ( & wasm[ len..] ) . map_err ( |_| TwasmError :: InvalidArchive ) ?;
63
- deserialize :: < TinyWasmModule , rkyv:: rancor:: Error > ( root) . map_err ( |_e| TwasmError :: InvalidArchive )
61
+ let root = access :: < Archived < Self > , rkyv:: rancor:: Error > ( & wasm[ len..] ) . map_err ( TwasmError :: InvalidArchive ) ?;
62
+ deserialize :: < TinyWasmModule , rkyv:: rancor:: Error > ( root) . map_err ( TwasmError :: InvalidArchive )
64
63
}
65
64
66
65
/// Serializes the `TinyWasmModule` into a vector of bytes.
@@ -93,14 +92,14 @@ mod tests {
93
92
let wasm = TinyWasmModule :: default ( ) ;
94
93
let mut twasm = wasm. serialize_twasm ( ) ;
95
94
twasm[ 0 ] = 0 ;
96
- assert_eq ! ( TinyWasmModule :: from_twasm( & twasm) , Err ( TwasmError :: InvalidMagic ) ) ;
95
+ assert ! ( matches! ( TinyWasmModule :: from_twasm( & twasm) , Err ( TwasmError :: InvalidMagic ) ) ) ;
97
96
}
98
97
99
98
#[ test]
100
99
fn test_invalid_version ( ) {
101
100
let wasm = TinyWasmModule :: default ( ) ;
102
101
let mut twasm = wasm. serialize_twasm ( ) ;
103
102
twasm[ 4 ] = 0 ;
104
- assert_eq ! ( TinyWasmModule :: from_twasm( & twasm) , Err ( TwasmError :: InvalidVersion ) ) ;
103
+ assert ! ( matches! ( TinyWasmModule :: from_twasm( & twasm) , Err ( TwasmError :: InvalidVersion ) ) ) ;
105
104
}
106
105
}
0 commit comments