Skip to main content

MetadataEdit

Struct MetadataEdit 

Source
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<'_>

Source

pub fn metadata(&self) -> &Metadata

Returns the current draft.

Source

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.

Source

pub fn set_description(&mut self, description: String)

Sets the draft’s global core:description field and discards any validation report.

Source

pub fn set_datatype(&mut self, datatype: Datatype)

Sets the draft’s global core:datatype field and discards any validation report.

Source

pub fn set_offset(&mut self, offset: Integer)

Sets the draft’s global core:offset field and discards any validation report.

Source

pub fn add_annotation(&mut self, annotation: Annotation)

Appends an annotation to the draft and discards any validation report.

Source

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.

Source

pub fn add_capture(&mut self, capture: Capture)

Appends a capture to the draft and discards any validation report.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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::validate has 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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more