Struct Context

Source
pub struct Context<'cx, T = ()> {
    pub storage: &'cx Storage,
    pub data: T,
    /* private fields */
}
Expand description

The context is the most important part of incremental compilation, the structure through which queries are run and that caches query invocations.

Fields§

§storage: &'cx Storage§data: T

Implementations§

Source§

impl<'cx> Context<'cx, ()>

Source

pub fn new(storage: &'cx Storage) -> Self

Source§

impl<'cx, T> Context<'cx, T>

Source

pub fn with_data(storage: &'cx Storage, data: T) -> Self

Source

pub fn set_cache_enabled(&self, enabled: bool)

Source

pub fn next_generation(&self)

Source

pub fn gc(self, new_storage: &Storage) -> Context<'_, T>

Garbage collect the context. Deletes unreachable notes. Reachability is evaluated based on “root” nodes.

Some queries are run as part of another query in the query system, I like to call those queries that run “inside” the query system. Other queries are run from “outside” the query system after you created a new Context and want to run your first query.

These outside queries are considered root queries, and any node reachable from them is kept alive by gc.

After this, all objects are allocated in new_storage and you can delete the old backing storage to actually save space.

Source

pub fn size(&self) -> usize

Returns the (approximate) size in bytes of the cache right now.

The approximation is always at most wrong by a linear factor, and can be used to determine when to garbage collect. However, some fields that don’t actually grow are not counted.

Trait Implementations§

Source§

impl<T> Deref for Context<'_, T>

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<'cx, T = ()> !Freeze for Context<'cx, T>

§

impl<'cx, T = ()> !RefUnwindSafe for Context<'cx, T>

§

impl<'cx, T = ()> !Send for Context<'cx, T>

§

impl<'cx, T = ()> !Sync for Context<'cx, T>

§

impl<'cx, T> Unpin for Context<'cx, T>
where T: Unpin,

§

impl<'cx, T = ()> !UnwindSafe for Context<'cx, T>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more