/rust/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/internal.rs
Line | Count | Source |
1 | | use serde; |
2 | | use std::io::{Read, Write}; |
3 | | use std::marker::PhantomData; |
4 | | |
5 | | use config::{Infinite, InternalOptions, Options, SizeLimit, TrailingBytes}; |
6 | | use de::read::BincodeRead; |
7 | | use Result; |
8 | | |
9 | 0 | pub(crate) fn serialize_into<W, T: ?Sized, O>(writer: W, value: &T, mut options: O) -> Result<()> |
10 | 0 | where |
11 | 0 | W: Write, |
12 | 0 | T: serde::Serialize, |
13 | 0 | O: InternalOptions, |
14 | 0 | { |
15 | 0 | if options.limit().limit().is_some() { |
16 | | // "compute" the size for the side-effect |
17 | | // of returning Err if the bound was reached. |
18 | 0 | serialized_size(value, &mut options)?; |
19 | 0 | } |
20 | | |
21 | 0 | let mut serializer = ::ser::Serializer::<_, O>::new(writer, options); |
22 | 0 | serde::Serialize::serialize(value, &mut serializer) |
23 | 0 | } |
24 | | |
25 | 0 | pub(crate) fn serialize<T: ?Sized, O>(value: &T, mut options: O) -> Result<Vec<u8>> |
26 | 0 | where |
27 | 0 | T: serde::Serialize, |
28 | 0 | O: InternalOptions, |
29 | 0 | { |
30 | 0 | let mut writer = { |
31 | 0 | let actual_size = serialized_size(value, &mut options)?; |
32 | 0 | Vec::with_capacity(actual_size as usize) |
33 | 0 | }; |
34 | 0 |
|
35 | 0 | serialize_into(&mut writer, value, options.with_no_limit())?; |
36 | 0 | Ok(writer) |
37 | 0 | } |
38 | | |
39 | 0 | pub(crate) fn serialized_size<T: ?Sized, O: InternalOptions>(value: &T, options: O) -> Result<u64> |
40 | 0 | where |
41 | 0 | T: serde::Serialize, |
42 | 0 | { |
43 | 0 | let mut size_counter = ::ser::SizeChecker { options, total: 0 }; |
44 | 0 |
|
45 | 0 | let result = value.serialize(&mut size_counter); |
46 | 0 | result.map(|_| size_counter.total) |
47 | 0 | } |
48 | | |
49 | 5.10k | pub(crate) fn deserialize_from<R, T, O>(reader: R, options: O) -> Result<T> |
50 | 5.10k | where |
51 | 5.10k | R: Read, |
52 | 5.10k | T: serde::de::DeserializeOwned, |
53 | 5.10k | O: InternalOptions, |
54 | 5.10k | { |
55 | 5.10k | deserialize_from_seed(PhantomData, reader, options) |
56 | 5.10k | } bincode::internal::deserialize_from::<&[u8], compat::AllTypes, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Bounded>, bincode::config::endian::LittleEndian>> Line | Count | Source | 49 | 5.10k | pub(crate) fn deserialize_from<R, T, O>(reader: R, options: O) -> Result<T> | 50 | 5.10k | where | 51 | 5.10k | R: Read, | 52 | 5.10k | T: serde::de::DeserializeOwned, | 53 | 5.10k | O: InternalOptions, | 54 | 5.10k | { | 55 | 5.10k | deserialize_from_seed(PhantomData, reader, options) | 56 | 5.10k | } |
Unexecuted instantiation: bincode::internal::deserialize_from::<&[u8], compat::AllTypes, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Bounded>, bincode::config::endian::NativeEndian>> Unexecuted instantiation: bincode::internal::deserialize_from::<&[u8], compat::AllTypes, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Bounded>, bincode::config::endian::BigEndian>> Unexecuted instantiation: bincode::internal::deserialize_from::<&[u8], compat::AllTypes, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>, bincode::config::endian::LittleEndian>> Unexecuted instantiation: bincode::internal::deserialize_from::<&[u8], compat::AllTypes, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>, bincode::config::endian::NativeEndian>> Unexecuted instantiation: bincode::internal::deserialize_from::<&[u8], compat::AllTypes, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>, bincode::config::endian::BigEndian>> Unexecuted instantiation: bincode::internal::deserialize_from::<_, _, _> |
57 | | |
58 | 5.10k | pub(crate) fn deserialize_from_seed<'a, R, T, O>(seed: T, reader: R, options: O) -> Result<T::Value> |
59 | 5.10k | where |
60 | 5.10k | R: Read, |
61 | 5.10k | T: serde::de::DeserializeSeed<'a>, |
62 | 5.10k | O: InternalOptions, |
63 | 5.10k | { |
64 | 5.10k | let reader = ::de::read::IoReader::new(reader); |
65 | 5.10k | deserialize_from_custom_seed(seed, reader, options) |
66 | 5.10k | } bincode::internal::deserialize_from_seed::<&[u8], core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Bounded>, bincode::config::endian::LittleEndian>> Line | Count | Source | 58 | 5.10k | pub(crate) fn deserialize_from_seed<'a, R, T, O>(seed: T, reader: R, options: O) -> Result<T::Value> | 59 | 5.10k | where | 60 | 5.10k | R: Read, | 61 | 5.10k | T: serde::de::DeserializeSeed<'a>, | 62 | 5.10k | O: InternalOptions, | 63 | 5.10k | { | 64 | 5.10k | let reader = ::de::read::IoReader::new(reader); | 65 | 5.10k | deserialize_from_custom_seed(seed, reader, options) | 66 | 5.10k | } |
Unexecuted instantiation: bincode::internal::deserialize_from_seed::<&[u8], core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Bounded>, bincode::config::endian::NativeEndian>> Unexecuted instantiation: bincode::internal::deserialize_from_seed::<&[u8], core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Bounded>, bincode::config::endian::BigEndian>> Unexecuted instantiation: bincode::internal::deserialize_from_seed::<&[u8], core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>, bincode::config::endian::LittleEndian>> Unexecuted instantiation: bincode::internal::deserialize_from_seed::<&[u8], core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>, bincode::config::endian::NativeEndian>> Unexecuted instantiation: bincode::internal::deserialize_from_seed::<&[u8], core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>, bincode::config::endian::BigEndian>> Unexecuted instantiation: bincode::internal::deserialize_from_seed::<_, _, _> |
67 | | |
68 | 0 | pub(crate) fn deserialize_from_custom<'a, R, T, O>(reader: R, options: O) -> Result<T> |
69 | 0 | where |
70 | 0 | R: BincodeRead<'a>, |
71 | 0 | T: serde::de::DeserializeOwned, |
72 | 0 | O: InternalOptions, |
73 | 0 | { |
74 | 0 | deserialize_from_custom_seed(PhantomData, reader, options) |
75 | 0 | } |
76 | | |
77 | 5.10k | pub(crate) fn deserialize_from_custom_seed<'a, R, T, O>( |
78 | 5.10k | seed: T, |
79 | 5.10k | reader: R, |
80 | 5.10k | options: O, |
81 | 5.10k | ) -> Result<T::Value> |
82 | 5.10k | where |
83 | 5.10k | R: BincodeRead<'a>, |
84 | 5.10k | T: serde::de::DeserializeSeed<'a>, |
85 | 5.10k | O: InternalOptions, |
86 | 5.10k | { |
87 | 5.10k | let mut deserializer = ::de::Deserializer::<_, O>::with_bincode_read(reader, options); |
88 | 5.10k | seed.deserialize(&mut deserializer) |
89 | 5.10k | } bincode::internal::deserialize_from_custom_seed::<bincode::de::read::IoReader<&[u8]>, core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Bounded>, bincode::config::endian::LittleEndian>> Line | Count | Source | 77 | 5.10k | pub(crate) fn deserialize_from_custom_seed<'a, R, T, O>( | 78 | 5.10k | seed: T, | 79 | 5.10k | reader: R, | 80 | 5.10k | options: O, | 81 | 5.10k | ) -> Result<T::Value> | 82 | 5.10k | where | 83 | 5.10k | R: BincodeRead<'a>, | 84 | 5.10k | T: serde::de::DeserializeSeed<'a>, | 85 | 5.10k | O: InternalOptions, | 86 | 5.10k | { | 87 | 5.10k | let mut deserializer = ::de::Deserializer::<_, O>::with_bincode_read(reader, options); | 88 | 5.10k | seed.deserialize(&mut deserializer) | 89 | 5.10k | } |
Unexecuted instantiation: bincode::internal::deserialize_from_custom_seed::<bincode::de::read::IoReader<&[u8]>, core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Bounded>, bincode::config::endian::NativeEndian>> Unexecuted instantiation: bincode::internal::deserialize_from_custom_seed::<bincode::de::read::IoReader<&[u8]>, core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Bounded>, bincode::config::endian::BigEndian>> Unexecuted instantiation: bincode::internal::deserialize_from_custom_seed::<bincode::de::read::IoReader<&[u8]>, core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>, bincode::config::endian::LittleEndian>> Unexecuted instantiation: bincode::internal::deserialize_from_custom_seed::<bincode::de::read::IoReader<&[u8]>, core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>, bincode::config::endian::NativeEndian>> Unexecuted instantiation: bincode::internal::deserialize_from_custom_seed::<bincode::de::read::IoReader<&[u8]>, core::marker::PhantomData<compat::AllTypes>, bincode::config::WithOtherEndian<bincode::config::WithOtherLimit<bincode::config::WithOtherTrailing<bincode::config::WithOtherIntEncoding<bincode::config::DefaultOptions, bincode::config::int::FixintEncoding>, bincode::config::trailing::AllowTrailing>, bincode::config::limit::Infinite>, bincode::config::endian::BigEndian>> Unexecuted instantiation: bincode::internal::deserialize_from_custom_seed::<_, _, _> |
90 | | |
91 | 0 | pub(crate) fn deserialize_in_place<'a, R, T, O>(reader: R, options: O, place: &mut T) -> Result<()> |
92 | 0 | where |
93 | 0 | R: BincodeRead<'a>, |
94 | 0 | T: serde::de::Deserialize<'a>, |
95 | 0 | O: InternalOptions, |
96 | 0 | { |
97 | 0 | let mut deserializer = ::de::Deserializer::<_, _>::with_bincode_read(reader, options); |
98 | 0 | serde::Deserialize::deserialize_in_place(&mut deserializer, place) |
99 | 0 | } |
100 | | |
101 | 0 | pub(crate) fn deserialize<'a, T, O>(bytes: &'a [u8], options: O) -> Result<T> |
102 | 0 | where |
103 | 0 | T: serde::de::Deserialize<'a>, |
104 | 0 | O: InternalOptions, |
105 | 0 | { |
106 | 0 | deserialize_seed(PhantomData, bytes, options) |
107 | 0 | } |
108 | | |
109 | 0 | pub(crate) fn deserialize_seed<'a, T, O>(seed: T, bytes: &'a [u8], options: O) -> Result<T::Value> |
110 | 0 | where |
111 | 0 | T: serde::de::DeserializeSeed<'a>, |
112 | 0 | O: InternalOptions, |
113 | 0 | { |
114 | 0 | let options = ::config::WithOtherLimit::new(options, Infinite); |
115 | 0 |
|
116 | 0 | let reader = ::de::read::SliceReader::new(bytes); |
117 | 0 | let mut deserializer = ::de::Deserializer::with_bincode_read(reader, options); |
118 | 0 | let val = seed.deserialize(&mut deserializer)?; |
119 | | |
120 | 0 | match O::Trailing::check_end(&deserializer.reader) { |
121 | 0 | Ok(_) => Ok(val), |
122 | 0 | Err(err) => Err(err), |
123 | | } |
124 | 0 | } |