// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // Copyright by contributors to this project. // SPDX-License-Identifier: (Apache-2.0 OR MIT) use crate::{MlsDecode, MlsEncode, MlsSize}; use alloc::vec::Vec; impl MlsSize for bool { fn mls_encoded_len(&self) -> usize { 1 } } impl MlsEncode for bool { fn mls_encode(&self, writer: &mut Vec) -> Result<(), crate::Error> { writer.push(*self as u8); Ok(()) } } impl MlsDecode for bool { fn mls_decode(reader: &mut &[u8]) -> Result { MlsDecode::mls_decode(reader).map(|i: u8| i != 0) } } #[cfg(test)] mod tests { #[cfg(target_arch = "wasm32")] use wasm_bindgen_test::wasm_bindgen_test as test; use crate::{MlsDecode, MlsEncode}; use alloc::vec; #[test] fn round_trip() { assert_eq!(false.mls_encode_to_vec().unwrap(), vec![0]); assert_eq!(true.mls_encode_to_vec().unwrap(), vec![1]); let vec = vec![true, true, false]; let bytes = vec.mls_encode_to_vec().unwrap(); assert_eq!(vec, Vec::mls_decode(&mut &*bytes).unwrap()) } }