pub trait Storage: Sized {
// Required methods
fn from_config(config: &Value) -> Result<Self, PluginError>;
fn list_items(&self) -> Result<Vec<ItemStat>, PluginError>;
fn get_item(&self, name: &str) -> Result<String, PluginError>;
fn put_item(&self, name: &str, content: &str) -> Result<(), PluginError>;
fn delete_item(&self, name: &str) -> Result<(), PluginError>;
fn get_resource(&self, resource_id: &str) -> Result<Vec<u8>, PluginError>;
fn put_resource(
&self,
resource_id: &str,
data: &[u8],
) -> Result<(), PluginError>;
fn delete_resource(&self, resource_id: &str) -> Result<(), PluginError>;
fn init_new(&self) -> Result<(), PluginError>;
}Expand description
存储后端 trait,8 方法镜像宿主 StorageBackend(语义约定见 spec §6.5):
delete_* 幂等(不存在视为成功);init_new 建根 + .resource/ + 默认 info.json。
Required Methods§
Sourcefn from_config(config: &Value) -> Result<Self, PluginError>
fn from_config(config: &Value) -> Result<Self, PluginError>
从数据源配置(与 manifest config_schema 对齐的对象)构造。
fn list_items(&self) -> Result<Vec<ItemStat>, PluginError>
fn get_item(&self, name: &str) -> Result<String, PluginError>
fn put_item(&self, name: &str, content: &str) -> Result<(), PluginError>
fn delete_item(&self, name: &str) -> Result<(), PluginError>
fn get_resource(&self, resource_id: &str) -> Result<Vec<u8>, PluginError>
fn put_resource( &self, resource_id: &str, data: &[u8], ) -> Result<(), PluginError>
fn delete_resource(&self, resource_id: &str) -> Result<(), PluginError>
fn init_new(&self) -> Result<(), PluginError>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".