pub struct FileAnchor { /* private fields */ }Expand description
File-based anchor backend
Stores anchor receipts in a local JSON Lines file (one receipt per line). Suitable for development, testing, and single-node deployments.
§Security
Use try_new() or with_base_dir() for production to prevent path traversal.
Implementations§
Source§impl FileAnchor
impl FileAnchor
Sourcepub fn new(path: impl Into<PathBuf>) -> Self
pub fn new(path: impl Into<PathBuf>) -> Self
Create a new file anchor (no path validation)
§Warning
This constructor does not validate the path. For production use,
prefer try_new() or with_base_dir() to prevent path traversal.
Sourcepub fn with_base_dir(
path: impl Into<PathBuf>,
base_dir: impl Into<PathBuf>,
) -> Result<Self, AnchorError>
pub fn with_base_dir( path: impl Into<PathBuf>, base_dir: impl Into<PathBuf>, ) -> Result<Self, AnchorError>
Create a file anchor with path validation (HIGH-1 fix)
Validates that the path:
- Does not contain path traversal sequences (
..) - Is within the specified base directory
§Errors
Returns AnchorError::BackendUnavailable if path validation fails.
Trait Implementations§
Source§impl AnchorBackend for FileAnchor
impl AnchorBackend for FileAnchor
Source§fn anchor<'life0, 'life1, 'async_trait>(
&'life0 self,
root: &'life1 Hash,
metadata: AnchorMetadata,
) -> Pin<Box<dyn Future<Output = Result<AnchorReceipt, AnchorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn anchor<'life0, 'life1, 'async_trait>(
&'life0 self,
root: &'life1 Hash,
metadata: AnchorMetadata,
) -> Pin<Box<dyn Future<Output = Result<AnchorReceipt, AnchorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Anchor a Merkle root to the external system Read more
Source§fn verify<'life0, 'life1, 'async_trait>(
&'life0 self,
receipt: &'life1 AnchorReceipt,
) -> Pin<Box<dyn Future<Output = Result<bool, AnchorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn verify<'life0, 'life1, 'async_trait>(
&'life0 self,
receipt: &'life1 AnchorReceipt,
) -> Pin<Box<dyn Future<Output = Result<bool, AnchorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Verify that a previously issued receipt is still valid Read more
Source§impl Clone for FileAnchor
impl Clone for FileAnchor
Source§fn clone(&self) -> FileAnchor
fn clone(&self) -> FileAnchor
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for FileAnchor
impl RefUnwindSafe for FileAnchor
impl Send for FileAnchor
impl Sync for FileAnchor
impl Unpin for FileAnchor
impl UnwindSafe for FileAnchor
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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