Skip to main content

rspack_core/dependency/
context_dependency.rs

1use rspack_error::Diagnostic;
2
3use super::FactorizeInfo;
4use crate::{ContextOptions, ContextTypePrefix, Dependency};
5
6pub trait ContextDependency: Dependency {
7  fn request(&self) -> &str;
8  fn options(&self) -> &ContextOptions;
9  fn get_context(&self) -> Option<&str>;
10  fn resource_identifier(&self) -> &str;
11
12  fn get_optional(&self) -> bool {
13    false
14  }
15
16  fn type_prefix(&self) -> ContextTypePrefix;
17
18  fn critical(&self) -> &Option<Diagnostic>;
19  fn critical_mut(&mut self) -> &mut Option<Diagnostic>;
20
21  fn factorize_info(&self) -> &FactorizeInfo;
22  fn factorize_info_mut(&mut self) -> &mut FactorizeInfo;
23}
24
25pub trait AsContextDependency {
26  fn as_context_dependency(&self) -> Option<&dyn ContextDependency> {
27    None
28  }
29
30  fn as_context_dependency_mut(&mut self) -> Option<&mut dyn ContextDependency> {
31    None
32  }
33}
34
35impl<T: ContextDependency> AsContextDependency for T {
36  fn as_context_dependency(&self) -> Option<&dyn ContextDependency> {
37    Some(self)
38  }
39
40  fn as_context_dependency_mut(&mut self) -> Option<&mut dyn ContextDependency> {
41    Some(self)
42  }
43}