1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
use crate::common::error::RustBertError;
use crate::resources::{Resource, ResourceProvider};
use std::path::PathBuf;
/// # Local resource
#[derive(PartialEq, Eq, Debug, Clone)]
pub struct LocalResource {
/// Local path for the resource
pub local_path: PathBuf,
}
impl ResourceProvider for LocalResource {
/// Gets the path for a local resource.
///
/// # Returns
///
/// * `PathBuf` pointing to the resource file
///
/// # Example
///
/// ```no_run
/// use rust_bert::resources::{LocalResource, ResourceProvider};
/// use std::path::PathBuf;
/// let config_resource = LocalResource {
/// local_path: PathBuf::from("path/to/config.json"),
/// };
/// let config_path = config_resource.get_local_path();
/// ```
fn get_local_path(&self) -> Result<PathBuf, RustBertError> {
Ok(self.local_path.clone())
}
/// Gets a wrapper around the path for a local resource.
///
/// # Returns
///
/// * `Resource` wrapping a `PathBuf` pointing to the resource file
///
/// # Example
///
/// ```no_run
/// use rust_bert::resources::{LocalResource, ResourceProvider};
/// use std::path::PathBuf;
/// let config_resource = LocalResource {
/// local_path: PathBuf::from("path/to/config.json"),
/// };
/// let config_path = config_resource.get_resource();
/// ```
fn get_resource(&self) -> Result<Resource, RustBertError> {
Ok(Resource::PathBuf(self.local_path.clone()))
}
}
impl From<PathBuf> for LocalResource {
fn from(local_path: PathBuf) -> Self {
Self { local_path }
}
}
impl From<PathBuf> for Box<dyn ResourceProvider + Send> {
fn from(local_path: PathBuf) -> Self {
Box::new(LocalResource { local_path })
}
}