use rspack_cacheable::cacheable_dyn;
use super::Dependency;
use crate::DependencyCondition;
#[cacheable_dyn]
pub trait ModuleDependency: Dependency {
fn request(&self) -> &str;
fn user_request(&self) -> &str {
self.request()
}
fn weak(&self) -> bool {
self.lazy().is_some()
}
fn get_optional(&self) -> bool {
false
}
fn get_condition(&self) -> Option<DependencyCondition> {
None
}
}
pub trait AsModuleDependency {
fn as_module_dependency(&self) -> Option<&dyn ModuleDependency> {
None
}
fn as_module_dependency_mut(&mut self) -> Option<&mut dyn ModuleDependency> {
None
}
}
impl<T: ModuleDependency> AsModuleDependency for T {
fn as_module_dependency(&self) -> Option<&dyn ModuleDependency> {
Some(self)
}
fn as_module_dependency_mut(&mut self) -> Option<&mut dyn ModuleDependency> {
Some(self)
}
}