fory_core/serializer/
bool.rs1use crate::context::{ReadContext, WriteContext};
19use crate::error::Error;
20use crate::serializer::util::read_basic_type_info;
21use crate::serializer::Serializer;
22use crate::type_id::TypeId;
23use std::sync::Arc;
24
25impl Serializer for bool {
26 type Target = Self;
27
28 #[inline(always)]
29 fn write_data(value: &Self, context: &mut WriteContext) -> Result<(), Error> {
30 context.writer.write_u8(u8::from(*value));
31 Ok(())
32 }
33
34 #[inline(always)]
35 fn read_data(context: &mut ReadContext) -> Result<Self, Error> {
36 Ok(context.reader.read_u8()? == 1)
37 }
38
39 #[inline(always)]
40 fn default_value(_: &mut ReadContext) -> Result<Self, Error> {
41 Ok(false)
42 }
43
44 #[inline(always)]
45 fn read_arc_any(
46 context: &mut ReadContext,
47 ) -> Result<Arc<dyn std::any::Any + Send + Sync>, Error> {
48 Ok(Arc::new(Self::read_data(context)?))
49 }
50
51 #[inline(always)]
52 fn reserved_space() -> usize {
53 std::mem::size_of::<i32>()
54 }
55
56 #[inline(always)]
57 fn static_type_id() -> TypeId {
58 TypeId::BOOL
59 }
60
61 #[inline(always)]
62 fn write_type_info(context: &mut WriteContext) -> Result<(), Error> {
63 context.writer.write_u8(TypeId::BOOL as u8);
64 Ok(())
65 }
66
67 #[inline(always)]
68 fn read_type_info(context: &mut ReadContext) -> Result<(), Error> {
69 read_basic_type_info::<Self>(context)
70 }
71}