tfparser_core/loader/
limits.rs1use typed_builder::TypedBuilder;
13
14#[derive(Clone, Copy, Debug, PartialEq, Eq, TypedBuilder)]
16#[non_exhaustive]
17pub struct LoaderLimits {
18 #[builder(default = 4 * 1024 * 1024)]
20 pub max_file_bytes: u32,
21
22 #[builder(default = 10_000)]
24 pub max_blocks_per_file: u32,
25
26 #[builder(default = 64)]
29 pub max_attr_depth: u32,
30
31 #[builder(default = 1024)]
34 pub max_template_parts: u32,
35}
36
37impl Default for LoaderLimits {
38 fn default() -> Self {
39 Self::builder().build()
40 }
41}
42
43#[cfg(test)]
44#[allow(clippy::unwrap_used)]
45mod tests {
46 use super::*;
47
48 #[test]
49 fn test_defaults_match_spec() {
50 let l = LoaderLimits::default();
51 assert_eq!(l.max_file_bytes, 4 * 1024 * 1024);
52 assert_eq!(l.max_blocks_per_file, 10_000);
53 assert_eq!(l.max_attr_depth, 64);
54 assert_eq!(l.max_template_parts, 1024);
55 }
56
57 #[test]
58 fn test_builder_overrides() {
59 let l = LoaderLimits::builder()
60 .max_file_bytes(1024_u32)
61 .max_blocks_per_file(2_u32)
62 .build();
63 assert_eq!(l.max_file_bytes, 1024);
64 assert_eq!(l.max_blocks_per_file, 2);
65 assert_eq!(l.max_attr_depth, 64);
67 }
68}