1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
use anyhow::Error;
use std::{path::Path, sync::Arc};
use swc_common::SourceFile;
use swc_ecma_ast::Module;

pub trait Load {
    fn load(&self, path: &Path) -> Result<(Arc<SourceFile>, Module), Error>;
}

impl<T: ?Sized + Load> Load for Box<T> {
    fn load(&self, path: &Path) -> Result<(Arc<SourceFile>, Module), Error> {
        T::load(self, path)
    }
}

impl<'a, T: ?Sized + Load> Load for &'a T {
    fn load(&self, path: &Path) -> Result<(Arc<SourceFile>, Module), Error> {
        T::load(self, path)
    }
}