flexpiler/common/rustc/deserializer/
primitive_usize.rs1use std::str::FromStr;
2
3use crate::common::rustc::{block as block, Format};
4use crate::{error, Error};
5use crate::error::{Trait, Context};
6use crate::parser;
7use crate::reader;
8
9
10pub struct PrimitiveUSize;
12
13
14impl crate::identity::Trait for usize {
15 fn definition() -> String {
16 return String::from("usize");
17 }
18}
19
20
21impl crate::deserializer::Trait<
22 usize,
23 crate::common::rustc::Format
24> for PrimitiveUSize {
25 fn deserialize<ReaderType>(reader_mut_ref: &mut ReaderType)
26 -> crate::deserializer::Result<usize, crate::common::rustc::deserializer::Context, crate::Error<crate::common::rustc::error::Source>>
27 where ReaderType: reader::Trait {
28 use crate::deserializer::context::Trait;
29 use crate::error::Trait as ErrorTrait;
30 use crate::error::propagation::Trait as PropagationTrait;
31 use crate::parser::Parse;
32
33 let (number_data, number_finish) = match block::Number::parse(reader_mut_ref) {
34 Err(parser_error) => {
35 let error = error::Error::gen(parser_error)
36 .propagate(<Self as crate::deserializer::context::Trait<usize, crate::common::rustc::Format>>::context());
37 return crate::deserializer::Result::Err(error);
38 },
39 Ok(block::number::Result::NoDataFound { finish }) => {
40 return crate::deserializer::Result::NoDataFound {
41 context: finish.into()
42 };
43 }
44 Ok(block::number::Result::DataFound { data, finish }) => {
45 (data, finish)
46 },
47 };
48
49 let data = match usize::from_str(number_data.as_str()) {
50 Err(parse_int_error) => {
51 let error = error::Error::gen(parse_int_error)
52 .propagate(<Self as crate::deserializer::context::Trait<usize, crate::common::rustc::Format>>::context());
53 return crate::deserializer::Result::Err(error);
54 },
55 Ok(value) => value,
56 };
57 let context = number_finish.into();
58
59 return crate::deserializer::Result::DataFound {
60 data,
61 context,
62 };
63 }
64}
65
66
67impl crate::Deserialization<crate::common::rustc::Format> for usize {
68 type Deserializer = PrimitiveUSize;
69}