musli_json/de/
key_unsigned_visitor.rs1use core::fmt;
2use core::marker;
3
4use musli::de::ValueVisitor;
5use musli::Context;
6
7use crate::parser::integer::Unsigned;
8use crate::parser::SliceParser;
9
10use super::parse_unsigned;
11
12pub(crate) struct KeyUnsignedVisitor<T> {
13 _marker: marker::PhantomData<T>,
14}
15
16impl<T> KeyUnsignedVisitor<T> {
17 pub(super) const fn new() -> Self {
18 Self {
19 _marker: marker::PhantomData,
20 }
21 }
22}
23
24impl<'de, C, T> ValueVisitor<'de, C, [u8]> for KeyUnsignedVisitor<T>
25where
26 C: ?Sized + Context,
27 T: Unsigned,
28{
29 type Ok = T;
30
31 #[inline]
32 fn expecting(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
33 write!(f, "bytes")
34 }
35
36 #[inline]
37 fn visit_ref(self, cx: &C, bytes: &[u8]) -> Result<Self::Ok, C::Error> {
38 parse_unsigned(cx, &mut SliceParser::new(bytes))
39 }
40}