pub struct MetadataEdit<'a> { /* private fields */ }Expand description
A transactional edit of a Metadata document, created by
Metadata::edit.
Edits are applied to a draft. To publish them, call
MetadataEdit::validate and then MetadataEdit::commit; any change
made after validating invalidates the report, so commit always applies
exactly the draft that was validated. Dropping the edit discards the
draft.
§Examples
use sigmf::meta::Metadata;
use sigmf::validation::ValidationPolicy;
let mut metadata = Metadata::from_slice(br#"{
"global": {"core:version": "1.2.6", "core:datatype": "ri16_le"},
"captures": [],
"annotations": []
}"#)?;
let mut edit = metadata.edit();
edit.set_description("reviewed".to_string());
edit.validate(ValidationPolicy::StrictSupportedVersion);
edit.commit()?;
assert_eq!(metadata.get_description().as_deref(), Some("reviewed"));Implementations§
Source§impl MetadataEdit<'_>
impl MetadataEdit<'_>
Sourcepub fn metadata_mut(&mut self) -> &mut Metadata
pub fn metadata_mut(&mut self) -> &mut Metadata
Returns mutable access to the draft for edits not covered by the convenience methods.
Discards any validation report, so MetadataEdit::validate must be
called again before committing.
Sourcepub fn set_description(&mut self, description: String)
pub fn set_description(&mut self, description: String)
Sets the draft’s global core:description field and discards any
validation report.
Sourcepub fn set_datatype(&mut self, datatype: Datatype)
pub fn set_datatype(&mut self, datatype: Datatype)
Sets the draft’s global core:datatype field and discards any
validation report.
Sourcepub fn set_offset(&mut self, offset: Integer)
pub fn set_offset(&mut self, offset: Integer)
Sets the draft’s global core:offset field and discards any
validation report.
Sourcepub fn add_annotation(&mut self, annotation: Annotation)
pub fn add_annotation(&mut self, annotation: Annotation)
Appends an annotation to the draft and discards any validation report.
Sourcepub fn replace_annotation(
&mut self,
index: usize,
annotation: Annotation,
) -> Option<Annotation>
pub fn replace_annotation( &mut self, index: usize, annotation: Annotation, ) -> Option<Annotation>
Replaces the draft annotation at index, returning the old one.
Returns None and leaves the draft (and any validation report)
unchanged if index is out of bounds.
Sourcepub fn add_capture(&mut self, capture: Capture)
pub fn add_capture(&mut self, capture: Capture)
Appends a capture to the draft and discards any validation report.
Sourcepub fn replace_capture(
&mut self,
index: usize,
capture: Capture,
) -> Option<Capture>
pub fn replace_capture( &mut self, index: usize, capture: Capture, ) -> Option<Capture>
Replaces the draft capture at index, returning the old one.
Returns None and leaves the draft (and any validation report)
unchanged if index is out of bounds.
Sourcepub fn remove_annotation(&mut self, index: usize) -> Option<Annotation>
pub fn remove_annotation(&mut self, index: usize) -> Option<Annotation>
Removes and returns the draft annotation at index, shifting later
annotations down.
Returns None and leaves the draft (and any validation report)
unchanged if index is out of bounds.
Sourcepub fn remove_capture(&mut self, index: usize) -> Option<Capture>
pub fn remove_capture(&mut self, index: usize) -> Option<Capture>
Removes and returns the draft capture at index, shifting later
captures down.
Returns None and leaves the draft (and any validation report)
unchanged if index is out of bounds.
Sourcepub fn stable_sort_segments(&mut self)
pub fn stable_sort_segments(&mut self)
Stably sorts the draft’s captures and annotations by
core:sample_start, as SigMF requires, and discards any validation
report.
Entries with equal core:sample_start keep their relative order.
Sourcepub fn validate(&mut self, policy: ValidationPolicy) -> ValidationReport
pub fn validate(&mut self, policy: ValidationPolicy) -> ValidationReport
Validates the draft under policy and records the report for
MetadataEdit::commit.
The returned report is stamped with the policy and a fingerprint of
the draft, so it becomes stale if the draft changes afterwards. See
Metadata::validate for the checks performed.
Sourcepub fn commit(self) -> Result<(), SigmfError>
pub fn commit(self) -> Result<(), SigmfError>
Applies the draft to the original Metadata, consuming the edit.
§Errors
Returns crate::SigmfError::InvalidMetadata, leaving the original
document unchanged, if:
MetadataEdit::validatehas not been called since the last change;- the recorded report has status
Failed; or - the draft no longer matches the fingerprint in the report.
Auto Trait Implementations§
impl<'a> !UnwindSafe for MetadataEdit<'a>
impl<'a> Freeze for MetadataEdit<'a>
impl<'a> RefUnwindSafe for MetadataEdit<'a>
impl<'a> Send for MetadataEdit<'a>
impl<'a> Sync for MetadataEdit<'a>
impl<'a> Unpin for MetadataEdit<'a>
impl<'a> UnsafeUnpin for MetadataEdit<'a>
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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