pub struct BibliographyDependency {
path: ProjectPath,
content: ContentHash,
}Expand description
A bibliography input paired with its content-hash boundary.
DependencyId::Bibliography answers which .bib file this is (its
canonical ProjectPath); the paired [ContentHash] answers what was in
it at build time. Together they are what a future incremental engine needs
to decide that cached citation data is stale: the id is the cache slot, the
content hash is the staleness check (design note §4.1, §7).
Construction guarantees the id is always the Bibliography variant, so a
BibliographyDependency cannot be built over a source/asset/label identity
by mistake: path and kind are therefore infallible.
The content hash is supplied by the caller rather than computed here, which
keeps mos-cache free of any bibliography-format knowledge. Produce it from
the source bytes with mos_bib::bibliography_content_hash; mos-eval (which
reads the .bib and already depends on both crates) is the natural wiring
point.
§Examples
use mos_cache::{BibliographyDependency, DependencyId, DependencyKind};
use mos_core::ContentHash;
// The content hash would come from `mos_bib::bibliography_content_hash`.
let dep = BibliographyDependency::new("./refs.bib", ContentHash(0x1234))?;
assert_eq!(dep.kind(), DependencyKind::Bibliography);
assert_eq!(dep.id(), DependencyId::bibliography("refs.bib")?);
assert_eq!(dep.path().as_str(), "refs.bib");
assert_eq!(dep.content(), ContentHash(0x1234));Fields§
§path: ProjectPath§content: ContentHashImplementations§
Source§impl BibliographyDependency
impl BibliographyDependency
Sourcepub fn new(
path: impl AsRef<str>,
content: ContentHash,
) -> Result<Self, ProjectPathError>
pub fn new( path: impl AsRef<str>, content: ContentHash, ) -> Result<Self, ProjectPathError>
Pair a bibliography source path with the content hash of its bytes.
The path is canonicalized into a ProjectPath (§3.1), so logically
equal paths yield equal dependencies; an invalid path returns
ProjectPathError.
§Errors
Returns ProjectPathError when path is not a valid project-relative
path.
§Examples
use mos_cache::BibliographyDependency;
use mos_core::ContentHash;
// `./ch/../refs.bib` and `refs.bib` canonicalize to one identity.
assert_eq!(
BibliographyDependency::new("./ch/../refs.bib", ContentHash(7)),
BibliographyDependency::new("refs.bib", ContentHash(7)),
);Sourcepub fn id(&self) -> DependencyId
pub fn id(&self) -> DependencyId
The typed dependency identity (always the Bibliography variant).
§Examples
use mos_cache::{BibliographyDependency, DependencyId};
use mos_core::ContentHash;
let dep = BibliographyDependency::new("refs.bib", ContentHash(1))?;
assert_eq!(dep.id(), DependencyId::bibliography("refs.bib")?);Sourcepub const fn path(&self) -> &ProjectPath
pub const fn path(&self) -> &ProjectPath
The canonical project path of the bibliography source.
§Examples
use mos_cache::BibliographyDependency;
use mos_core::ContentHash;
assert_eq!(
BibliographyDependency::new("refs.bib", ContentHash(1))?.path().as_str(),
"refs.bib",
);Sourcepub const fn content(&self) -> ContentHash
pub const fn content(&self) -> ContentHash
The content-hash boundary of the source bytes at build time.
§Examples
use mos_cache::BibliographyDependency;
use mos_core::ContentHash;
assert_eq!(
BibliographyDependency::new("refs.bib", ContentHash(42))?.content(),
ContentHash(42),
);Sourcepub const fn kind(&self) -> DependencyKind
pub const fn kind(&self) -> DependencyKind
The DependencyKind of this dependency: always
Bibliography.
§Examples
use mos_cache::{BibliographyDependency, DependencyKind};
use mos_core::ContentHash;
let dep = BibliographyDependency::new("refs.bib", ContentHash(1))?;
assert_eq!(dep.kind(), DependencyKind::Bibliography);Trait Implementations§
Source§impl Clone for BibliographyDependency
impl Clone for BibliographyDependency
Source§fn clone(&self) -> BibliographyDependency
fn clone(&self) -> BibliographyDependency
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 BibliographyDependency
impl Debug for BibliographyDependency
impl Eq for BibliographyDependency
Source§impl Hash for BibliographyDependency
impl Hash for BibliographyDependency
Source§impl Ord for BibliographyDependency
impl Ord for BibliographyDependency
Source§fn cmp(&self, other: &BibliographyDependency) -> Ordering
fn cmp(&self, other: &BibliographyDependency) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for BibliographyDependency
impl PartialEq for BibliographyDependency
Source§fn eq(&self, other: &BibliographyDependency) -> bool
fn eq(&self, other: &BibliographyDependency) -> bool
self and other values to be equal, and is used by ==.