pub enum PutCondition {
IfMatch(String),
IfNoneMatchAny,
Unconditional,
}Expand description
A6: every publish is conditional. There is deliberately NO unconditional variant — a caller wanting one has an upstream design error.
Variants§
IfMatch(String)
Publish generation g+1 only if the object is still generation
g’s bytes (its ETag). The 412 this produces is an internal
fencing event — see tier::arbitrate.
IfNoneMatchAny
First generation of a new key: fail if ANY object exists (closes the create race with outside writers).
Unconditional
No precondition: create, or overwrite whatever is there.
Deliberately narrow. It exists for CONTENT-ADDRESSED objects,
where the rewrite is byte-identical and the POINT is to refresh
the object’s age rather than to change its contents: an adopted
manifest chunk is an old object that a new publish is about to
make live, and a sweep that reads age would otherwise collect it
as the orphan it still looks like (flint-lean chunked-manifest
design §8.1, machine-checked by LeanChunkGCAdoptSkips).
Never reach for this where a concurrent writer’s content could DIFFER from yours — that is what the other two variants are for, and losing that distinction is how a last-writer-wins overwrite gets reintroduced.
Trait Implementations§
Source§impl Clone for PutCondition
impl Clone for PutCondition
Source§fn clone(&self) -> PutCondition
fn clone(&self) -> PutCondition
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more