[−][src]Module whasm::grammar::core::signed
This module defines the deserialization of signed integer numbers
(i8
, i16
, i32
, i64
and isize
).
let mut iter = [0x56].iter().copied(); let result: i8 = deserialize(&mut iter).unwrap(); assert_eq!(result, -42);
The WebAssembly Specification specifies that signed integer numbers should be serialized using signed LEB-128 encoding. This means that a number can be encoded with a variable number of bytes.
let mut iter = [0xD6, 0xFF, 0x7F].iter().copied(); let result: i8 = deserialize(&mut iter).unwrap(); assert_eq!(result, -42);
Deserializing a signed integer will return the Err(_)
variant if the iterator is exhausted
before completing the deserialization.
let mut iter = [0xD6, 0xFF].iter().copied(); let result: Result<i8> = deserialize(&mut iter); assert!(result.is_err());
Deserialization will also return the Err(_)
variant if the encoded numeric value is out of
bound for the type being deserialized.
let mut iter = [0xD6, 0x7E].iter().copied(); let result: Result<i8> = deserialize(&mut iter); assert!(result.is_err());