Skip to main content

Reference

Struct Reference 

Source
pub struct Reference<T> {
    pub id: ReferenceId,
    /* private fields */
}
Expand description

A PDF reference to an indirect object.

In Livre, the Reference object is generic over the type of the indirect object, making the entire interface type-safe. You can “opt out” of type safety by using an Object type, which can represent any PDF object.

PDF documents resort to a “random access” strategy to limit repetition and split large objects into smaller atoms. Indirect objects are also used when a property cannot be known in advance. For instance, in the general case a PDF generator may choose to represent the Length key in the Stream dictionary with an indirect object to allow writing the content to disk without having to know the serialised length in advance.

To that end, some objects are represented by a Reference, indicating the object ID as well as the generation number. These are represented together in Livre, through the ReferenceId type.

In practice, it looks like the generation number is not useful unless we are interested in retrieving the PDF history. Livre tracks it in case we want to develop that capability down the line.

Fields§

§id: ReferenceId

Trait Implementations§

Source§

impl<T> Clone for Reference<T>

We need to implement the Clone trait manually because of the automatic trait bound on T.

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for Reference<T>

Source§

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

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

impl<T> Extract<'_> for Reference<T>

Source§

fn extract(input: &mut &BStr) -> PResult<Self>

Source§

fn recognize(input: &mut &'de BStr) -> PResult<&'de [u8]>

Consume the input, without trying to parse. Read more
Source§

impl<T> From<(usize, u16)> for Reference<T>

Source§

fn from(id: (usize, u16)) -> Self

Converts to this type from the input type.
Source§

impl From<Reference<Object>> for Object

Source§

fn from(value: Reference<Object>) -> Self

Converts to this type from the input type.
Source§

impl<T> From<ReferenceId> for Reference<T>

Source§

fn from(id: ReferenceId) -> Self

Converts to this type from the input type.
Source§

impl<T: PartialEq> PartialEq for Reference<T>

Source§

fn eq(&self, other: &Reference<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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<T> Copy for Reference<T>

Source§

impl<T: Eq> Eq for Reference<T>

Source§

impl<T> StructuralPartialEq for Reference<T>

Auto Trait Implementations§

§

impl<T> Freeze for Reference<T>

§

impl<T> RefUnwindSafe for Reference<T>
where T: RefUnwindSafe,

§

impl<T> Send for Reference<T>
where T: Send,

§

impl<T> Sync for Reference<T>
where T: Sync,

§

impl<T> Unpin for Reference<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for Reference<T>

§

impl<T> UnwindSafe for Reference<T>
where T: UnwindSafe,

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.

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> 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
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.