1use jrsonnet_parser::LocExpr;23mod structdump_import {4 pub(super) use std::{option::Option, rc::Rc, vec};56 pub(super) use jrsonnet_parser::*;7}89pub fn stdlib_expr() -> LocExpr {10 #[cfg(feature = "serialized-stdlib")]11 {12 use bincode::{BincodeRead, DefaultOptions, Options};13 use serde::{Deserialize, Deserializer};1415 struct LocDeserializer<R, O: Options> {16 source: Source,17 wrapped: bincode::Deserializer<R, O>,18 }19 macro_rules! delegate {20 ($(fn $name:ident($($arg:ident: $ty:ty),*))+) => {$(21 fn $name<V>(mut self $(, $arg: $ty)*, visitor: V) -> Result<V::Value, Self::Error>22 where V: serde::de::Visitor<'de>,23 {24 self.wrapped.$name($($arg,)* visitor)25 }26 )+};27 }28 impl<'de, R, O> Deserializer<'de> for LocDeserializer<R, O>29 where30 R: BincodeRead<'de>,31 O: Options,32 {33 type Error = <&'de mut bincode::Deserializer<R, O> as Deserializer<'de>>::Error;3435 delegate! {36 fn deserialize_any()37 fn deserialize_bool()38 fn deserialize_u16()39 fn deserialize_u32()40 fn deserialize_u64()41 fn deserialize_i16()42 fn deserialize_i32()43 fn deserialize_i64()44 fn deserialize_f32()45 fn deserialize_f64()46 fn deserialize_u128()47 fn deserialize_i128()48 fn deserialize_u8()49 fn deserialize_i8()50 fn deserialize_unit()51 fn deserialize_char()52 fn deserialize_str()53 fn deserialize_string()54 fn deserialize_bytes()55 fn deserialize_byte_buf()56 fn deserialize_enum(name: &'static str, variants: &'static [&'static str])57 fn deserialize_tuple(len: usize)58 fn deserialize_option()59 fn deserialize_seq()60 fn deserialize_map()61 fn deserialize_struct(name: &'static str, fields: &'static [&'static str])62 fn deserialize_identifier()63 fn deserialize_newtype_struct(name: &'static str)64 fn deserialize_unit_struct(name: &'static str)65 fn deserialize_tuple_struct(name: &'static str, len: usize)66 fn deserialize_ignored_any()67 }6869 fn is_human_readable(&self) -> bool {70 false71 }72 }7374 75 let mut deserializer = bincode::Deserializer::from_slice(76 include_bytes!(concat!(env!("OUT_DIR"), "/stdlib.bincode")),77 DefaultOptions::new()78 .with_fixint_encoding()79 .allow_trailing_bytes(),80 );8182 83 LocExpr::deserialize(&mut deserializer).unwrap()84 }8586 #[cfg(feature = "codegenerated-stdlib")]87 {88 include!(concat!(env!("OUT_DIR"), "/stdlib.rs"))89 }9091 #[cfg(not(feature = "codegenerated-stdlib"))]92 {93 jrsonnet_parser::parse(94 STDLIB_STR,95 &ParserSettings {96 file_name: Source::new_virtual(Cow::Borrowed("<std>"), STDLIB_STR.into()),97 },98 )99 .unwrap()100 }101}