Struct ReleaseFacts

Source
pub struct ReleaseFacts {
    pub lookup_mbid: Option<String>,
    pub primary_type: Option<String>,
    pub secondary_types: Vec<String>,
    pub first_released: Option<String>,
    pub label: Option<String>,
    pub label_mbid: Option<String>,
    pub cover_art: Option<String>,
    pub edition_mbid: Option<String>,
    pub edition_lookup_mbid: Option<String>,
    pub credits: Vec<CreditLink>,
    pub relationships_complete: bool,
}
Expand description

What a source says about one release.

Unlike the artist fields, these do have tag counterparts — Picard writes RELEASETYPE, DATE and LABEL — which is what makes a release the place where agreement and disagreement can actually be observed.

Fields§

§lookup_mbid: Option<String>

Release-group MBID whose exact lookup confirmed the canonical source ID. Edition lookups never establish this alias. Optional on legacy snapshots; it preserves identity through a merge without replacing the local tag.

§primary_type: Option<String>

Album, Single, EP, Broadcast, Other — the release group’s primary type.

§secondary_types: Vec<String>

Compilation, Soundtrack, Live, Remix, Demo… any number of them.

§first_released: Option<String>

First release date of the group, which is not the date of this edition: a 2011 remaster of a 1973 album was first released in 1973.

§label: Option<String>

Label, as the source names it.

§label_mbid: Option<String>

The label’s own MusicBrainz identifier, when the same answer carried one.

Kept beside the name rather than instead of it, the same choice ArtistFacts::country_code makes beside ArtistFacts::area: the source states both, and a reader who only wants to see the label reads the name, while fetch --labels reads the identifier. Read from the very label-info entry the name came from — never from a different one — so a release crediting several labels is never misattributed. Never from a tag: no widely used tag carries a label’s MusicBrainz identifier, so this can only ever come from a release lookup, unlike every other mbid in crate::model.

§cover_art: Option<String>

Address of the front image, when a source holds one.

The address rather than the picture: a catalog is a description of a library, and megabytes of artwork inside sources.json would make every load of it slower for something that belongs beside the music. The image is written into the album’s folder, where the next scan discovers it exactly as it would one the user put there.

Kept so that “asked, and there is a cover” can be told from “asked, and there is none” — the distinction this whole layer exists for — and so that a second run costs nothing.

§edition_mbid: Option<String>

Canonical edition returned for these relationships, absent for a group search.

§edition_lookup_mbid: Option<String>

Exact edition selector confirmed by a redirected lookup. This is separate from the release-group alias and absent from legacy snapshots.

§credits: Vec<CreditLink>

Artist relationships on this edition, never on the release group.

§relationships_complete: bool

Distinguishes an empty lookup from an edition never queried for credits.

Trait Implementations§

Source§

impl Clone for ReleaseFacts

Source§

fn clone(&self) -> ReleaseFacts

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ReleaseFacts

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ReleaseFacts

Source§

fn default() -> ReleaseFacts

Returns the “default value” for a type. Read more
Source§

impl PartialEq for ReleaseFacts

Source§

fn eq(&self, other: &ReleaseFacts) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for ReleaseFacts

Source§

impl StructuralPartialEq for ReleaseFacts

Auto Trait Implementations§

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

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

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.

§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

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<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,