use crate::resolution::read::ByteCeilings;
pub(super) fn admits_depth(depth: u32, ceiling: u32) -> bool {
depth <= ceiling
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ResolutionLimits {
pub max_manifests: u32,
pub max_member_scan_entries: u32,
pub max_units: u32,
pub max_source_files: u32,
pub max_source_file_bytes: u64,
pub max_total_source_bytes: u64,
pub max_module_depth: u32,
pub max_module_instances: u32,
pub max_dependency_depth: u32,
pub max_syntax_depth: u32,
pub max_candidates_per_reference: u32,
}
impl ByteCeilings for ResolutionLimits {
fn source_bytes(&self) -> u64 {
self.max_source_file_bytes
}
fn total_bytes(&self) -> u64 {
self.max_total_source_bytes
}
}
impl Default for ResolutionLimits {
fn default() -> Self {
Self {
max_manifests: 4_096,
max_member_scan_entries: 65_536,
max_units: 4_096,
max_source_files: 65_536,
max_source_file_bytes: 8 * 1_024 * 1_024,
max_total_source_bytes: 512 * 1_024 * 1_024,
max_module_depth: 256,
max_module_instances: 65_536,
max_dependency_depth: 256,
max_syntax_depth: 256,
max_candidates_per_reference: 1_024,
}
}
}