pub struct Local { /* private fields */ }Expand description
One name the source bound, and what it holds.
Implementations§
Source§impl Local
impl Local
Sourcepub fn value(&self) -> &str
pub fn value(&self) -> &str
What it holds, rendered.
Always an answer, which is the whole difference from a boundary
crossing. A value that could not be
read carries a marker saying which way it could not — <reclaimed>,
<cycle>, <case 7 of 3> — rather than being absent.
Sourcepub fn at(&self) -> u32
pub fn at(&self) -> u32
Which word of the frame it begins at.
A position, not a name of anything this crate owns: it is what lets a session say the same word as that one without being handed the type the machine indexes frames by.
Sourcepub fn width(&self) -> u32
pub fn width(&self) -> u32
How many words it occupies. A value is a run of words, so a name
covers width of them from Local::at, and Local::words is
that run.
Sourcepub fn words(&self) -> &[Word]
pub fn words(&self) -> &[Word]
The words the name covers, read as the frame says they should be.
Local::value is what the name holds rendered, and that is where
a reader stops. This is where a debugger does not: a name bound to a
vector renders as its elements and holds a reference, and until this
was here there was no way to get from the name to the reference —
Stop::object follows a word, and Call::words by construction
excludes every word a name covers. So print xs could show a vector
and nothing could then look at the object, which is a hole in a
debugger rather than a missing convenience.
It is the same Word view Call::words hands out, and
deliberately: a word of a frame is a word of a frame whether a name
covers it or not, and a second shape for the same thing would be a
second thing to keep true. words().len() is Local::width, and
the first of them is at Local::at.