Skip to main content

EnvField

Struct EnvField 

Source
pub struct EnvField {
    pub name: &'static str,
    pub from: &'static str,
    pub node: &'static [&'static str],
    pub lua: &'static [&'static str],
    pub c: &'static str,
    pub doc: &'static str,
    pub get: fn(&EnvFacts) -> Value,
}
Expand description

One value in the host-environment reading a view gets — ui.env() in Rust, view(env) in Lua, ctx.env() / win.env() in Node — and the key each binding puts it under. C has no reading: a C host is the frame driver, so it is the writer (kui_env_set, kui_env_set_window), and its column names the argument that carries the fact in.

Env and WindowEnv are the shape; this table is the cross-binding restatement of it, and every restatement is pinned to it rather than trusted: schema’s tests check the rows against the two structs, the Lua and Node key-set tests check each binding’s reading against the lua / node columns, and kui-ffi checks the header’s two prototypes against the c column. The frame facts a view wants at the same moment (the viewport, the focused node) ride in the same reading and have rows here too, marked as the frame’s rather than Env’s.

Two divergences are deliberate and named in their rows: native_controls is the Rect the core holds in Node and a width/height at the window origin in Lua and C, and frame_budget_ms is derived from refresh_hz but part of the reading everywhere.

Fields§

§name: &'static str

The canonical name: the Rust field path (window.custom_chrome).

§from: &'static str

Where it comes from — the Rust struct and field for a stored fact, the call for a derived or frame fact.

§node: &'static [&'static str]

The key path(s) it occupies in Node’s ctx.env(); empty when Node carries the fact as a call on the context instead (the doc says which) or not at all.

§lua: &'static [&'static str]

The same for Lua’s view(env) table. Two entries where Lua flattens one fact into two keys.

§c: &'static str

The C spelling: function(argument) for the setter argument that writes it — the first thing in the cell, so kui-ffi can parse it — or the call that reads it.

§doc: &'static str§get: fn(&EnvFacts) -> Value

The fact’s reading, as plain data: Null for “the host cannot tell”, an enum as its wire name, a key as its integer, a rect as {x, y, w, h}. What makes the table a reader and not only a pin — a binding iterates the rows and asks each for its value, then spells the key its own way, so a fact added here reaches every reading with no reader restated beside it (the way ThemeRole::get does for the palette).

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.