pub struct JsonFilePersistence { /* private fields */ }Expand description
On-disk JSON-sidecar persistence.
Records are stored as a JSON array on a single file under the configured path. Reads parse the whole file; writes serialize the whole array. This is intentionally simple — declared plugins are metadata, not throughput-sensitive.
File format (proposal §9.7 schema, JSON-encoded):
[
{
"qname": "mycorp.fullName",
"kind": "Function",
"body": "$first + ' ' + $last",
"signature_json": "{...}",
"dependencies": [],
"declared_by": "alice",
"active": true
}
]The cutover to _DeclaredPlugin system-label persistence (proposal
§9.7) leaves this struct unchanged — the wire schema is identical.
Implementations§
Source§impl JsonFilePersistence
impl JsonFilePersistence
Sourcepub fn new(path: PathBuf) -> Self
pub fn new(path: PathBuf) -> Self
Construct a persistence backend at the exact path.
The file is created on first write. If it does not exist at
construction time, Self::load_all returns an empty vector. The path
is used verbatim (via SystemSidecar::at_path) so existing
declared_plugins.json files keep loading across an upgrade.
Trait Implementations§
Source§impl Debug for JsonFilePersistence
impl Debug for JsonFilePersistence
Source§impl Persistence for JsonFilePersistence
impl Persistence for JsonFilePersistence
Source§fn save(&self, plugin: &DeclaredPlugin) -> Result<(), PersistenceError>
fn save(&self, plugin: &DeclaredPlugin) -> Result<(), PersistenceError>
Persist a freshly-declared plugin record. Read more
Source§fn delete(&self, qname: &str) -> Result<(), PersistenceError>
fn delete(&self, qname: &str) -> Result<(), PersistenceError>
Remove a previously persisted record by qname. Read more
Source§fn load_all(&self) -> Result<Vec<DeclaredPlugin>, PersistenceError>
fn load_all(&self) -> Result<Vec<DeclaredPlugin>, PersistenceError>
Replay every persisted declaration (in any order — callers
must topologically sort if dependency ordering matters). Read more
Auto Trait Implementations§
impl !Freeze for JsonFilePersistence
impl RefUnwindSafe for JsonFilePersistence
impl Send for JsonFilePersistence
impl Sync for JsonFilePersistence
impl Unpin for JsonFilePersistence
impl UnsafeUnpin for JsonFilePersistence
impl UnwindSafe for JsonFilePersistence
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more