You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
960 B
Rust
38 lines
960 B
Rust
use crate::bibliography::bibliography_entry::BibliographyEntryReference;
|
|
use parking_lot::Mutex;
|
|
use std::sync::Arc;
|
|
|
|
/// A reference to a bibliography entry
|
|
#[derive(Clone, Debug)]
|
|
pub struct BibRef {
|
|
key: String,
|
|
anchor: Arc<Mutex<BibRefAnchor>>,
|
|
}
|
|
|
|
/// An anchor of a BibRef that can be used in a DOM to remember the place of a BibRef
|
|
/// and to access the corresponding bibliography entry.
|
|
#[derive(Clone, Debug)]
|
|
pub struct BibRefAnchor {
|
|
pub entry: Option<BibliographyEntryReference>,
|
|
}
|
|
|
|
impl BibRef {
|
|
/// Creates a new BibRef with a given key
|
|
pub fn new(key: String) -> Self {
|
|
Self {
|
|
key,
|
|
anchor: Arc::new(Mutex::new(BibRefAnchor { entry: None })),
|
|
}
|
|
}
|
|
|
|
/// Returns the anchor of the BibRef
|
|
pub fn anchor(&self) -> Arc<Mutex<BibRefAnchor>> {
|
|
Arc::clone(&self.anchor)
|
|
}
|
|
|
|
/// Returns the key of the BibRef
|
|
pub fn key(&self) -> &String {
|
|
&self.key
|
|
}
|
|
}
|