Skip to main content

Document

Struct Document 

Source
pub struct Document {
    pub graph: Graph,
    pub trivia: Trivia,
    pub layout: Layout,
}
Expand description

A graph together with everything keyed by the identities inside it.

The three tables have to move as one. They are keyed by the same node names and wires, so an edit that updated only some of them would leave the rest pointing at things that no longer exist — which, for the comment table, means deleting somebody’s writing on the next save.

Source spans deliberately do not live here. A span describes the text a file was parsed from, and the first edit makes every one of them stale, not merely the ones naming the edited node. Keeping them out means a stale span cannot be read by accident.

Fields§

§graph: Graph§trivia: Trivia§layout: Layout

Implementations§

Source§

impl Document

Source

pub fn new(graph: Graph, trivia: Trivia, layout: Layout) -> Self

Source

pub fn remove_node(&mut self, name: &str) -> Option<Node>

Removes a node together with every wire that touches it, its position, and the comments belonging to all of them.

Wires are not left dangling: a dangling wire is a state the compiler would have to consider on every check, and a later node reusing the freed name would silently inherit both the wires and the dead node’s comments.

Source

pub fn remove_edge(&mut self, edge: &Edge) -> bool

Removes one wire and the comments attached to it.

Source

pub fn rename_node(&mut self, from: &str, to: &str) -> Result<(), RenameError>

Renames a node, rewriting every wire that mentions it and carrying its comments and its position across.

This is the price of letting a node’s name be its identity, and it is paid here rather than by each caller so that it is paid the same way every time.

Trait Implementations§

Source§

impl Clone for Document

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 Debug for Document

Source§

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

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

impl PartialEq for Document

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Document

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.

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.