pub struct ArtifactStore { /* private fields */ }Implementations§
Source§impl ArtifactStore
impl ArtifactStore
pub fn new() -> Self
pub fn with_limits(limits: ArtifactStoreLimits) -> Self
pub fn put(&self, artifact: ToolArtifact)
Sourcepub fn put_content_addressed(
&self,
artifact: ToolArtifact,
) -> Result<bool, ArtifactStoreError>
pub fn put_content_addressed( &self, artifact: ToolArtifact, ) -> Result<bool, ArtifactStoreError>
Insert an artifact without allowing an existing URI to be overwritten.
Exact replay is idempotent and returns Ok(false). A URI collision
with different bytes or metadata fails closed and leaves the retained
artifact untouched. Retention eviction remains explicit store policy:
after an object is evicted, a later create-only write may reinsert its
URI because the store no longer owns that historical object.
pub fn get(&self, artifact_uri: &str) -> Option<ToolArtifact>
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
pub fn total_bytes(&self) -> usize
pub fn limits(&self) -> ArtifactStoreLimits
pub fn artifacts(&self) -> Vec<ToolArtifact>
Sourcepub fn pin_uris(&self, uris: impl IntoIterator<Item = impl Into<String>>)
pub fn pin_uris(&self, uris: impl IntoIterator<Item = impl Into<String>>)
Pin artifact URIs so limit eviction and unreferenced GC cannot remove content still reachable from a retained identity (STORE-GC1).
Sourcepub fn set_retained_uris(
&self,
uris: impl IntoIterator<Item = impl Into<String>>,
)
pub fn set_retained_uris( &self, uris: impl IntoIterator<Item = impl Into<String>>, )
Replace the retained URI set with exactly the supplied roots.
pub fn retained_uris(&self) -> HashSet<String>
Sourcepub fn gc_unreferenced(&self) -> usize
pub fn gc_unreferenced(&self) -> usize
Remove artifacts that are not in the retained root set.
Returns the number of removed objects. Retained roots that are absent from the store are ignored; present retained objects are never removed.
pub fn save_to_dir(&self, dir: impl AsRef<Path>) -> Result<()>
pub fn load_from_dir(dir: impl AsRef<Path>) -> Result<Self>
pub fn load_from_manifest_bytes(bytes: &[u8]) -> Result<Self>
pub fn load_from_manifest_bytes_with_limits( bytes: &[u8], limits: ArtifactStoreLimits, ) -> Result<Self>
pub fn load_from_dir_with_limits( dir: impl AsRef<Path>, limits: ArtifactStoreLimits, ) -> Result<Self>
Trait Implementations§
Source§impl Clone for ArtifactStore
impl Clone for ArtifactStore
Source§fn clone(&self) -> ArtifactStore
fn clone(&self) -> ArtifactStore
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ArtifactStore
impl Debug for ArtifactStore
Auto Trait Implementations§
impl Freeze for ArtifactStore
impl RefUnwindSafe for ArtifactStore
impl Send for ArtifactStore
impl Sync for ArtifactStore
impl Unpin for ArtifactStore
impl UnsafeUnpin for ArtifactStore
impl UnwindSafe for ArtifactStore
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
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> ⓘ
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> ⓘ
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