pub trait MathArchive {
// Required methods
fn uri(&self) -> &ArchiveUri;
fn path(&self) -> &Path;
fn is_meta(&self) -> bool;
fn load_module(
&self,
path: Option<&UriPath>,
name: &str,
) -> Result<Module, BackendError>;
fn load_module_async<A: AsyncEngine>(
&self,
path: Option<&UriPath>,
name: &str,
) -> impl Future<Output = Result<Module, BackendError>> + 'static + use<Self, A>
where Self: Sized;
// Provided method
fn id(&self) -> &ArchiveId { ... }
}