use super::{namespace::Namespace, PathBuf};
pub struct SubmoduleNamespace<'a> {
pub(crate) namespace: &'a mut Namespace,
pub(crate) parent_mod_path: PathBuf,
}
impl<'a> std::ops::Deref for SubmoduleNamespace<'a> {
type Target = Namespace;
fn deref(&self) -> &Self::Target {
self.namespace
}
}
impl<'a> std::ops::DerefMut for SubmoduleNamespace<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
self.namespace
}
}
impl<'a> Drop for SubmoduleNamespace<'a> {
fn drop(&mut self) {
self.namespace.mod_path = std::mem::take(&mut self.parent_mod_path);
}
}