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