pub enum Gap {
Bound,
Peer,
Group,
Section,
Pane,
Page,
}Expand description
A named separation between two things.
Pick by relationship. The size is a consequence of the name, not the other way round, and callers should never care what it is.
Variants§
Bound
A control and the thing it belongs to: an edit field and its pop-up, a checkbox and its label, an icon and the text it labels. Reads as one object.
Peer
Items of the same kind in a list: stacked checkboxes, radio buttons, rows, chips in a row. Reads as a set.
Group
A container’s inner margin, and the distance between sibling groups side by side. Reads as “inside this box”.
Section
Separated groups, and rows of actions. The first gap that reads as a deliberate break rather than as breathing room.
Pane
Panel padding and content shells. Layout, not controls.
Page
The outermost shell margin. One per screen, usually.
Implementations§
Source§impl Gap
impl Gap
Sourcepub const fn step_at(self, density: Density) -> Step
pub const fn step_at(self, density: Density) -> Step
The step this relationship resolves to at a given density, on a
SizeClass::Medium or wider window.
Density::Pointer’s values are the HIG’s own. Density::Touch
opens the three gaps that separate distinct tap targets and holds the
rest, per the crate-level “Density presets” section.
Shells tighten on a compact window rather than at touch density. Use
Self::step_at_size where the window width is known; this is the
wider-window answer and the one every existing caller already meant.
Sourcepub const fn step_at_size(self, density: Density, size: SizeClass) -> Step
pub const fn step_at_size(self, density: Density, size: SizeClass) -> Step
The step this relationship resolves to at a given density and window size class.
Only the two shells move, and only on SizeClass::Compact: pane
24 to 16, page 32 to 24, one step down each. The four gaps between
controls do not, because how much room a window has says nothing about
how far apart two tap targets should be.
Which axis owns this (Max, 2026-08-09). The Pointer preset was
carrying a retune to pane 14 / page 16 on the strength of a specimen
that wanted a tighter window edge. A tighter window edge is a claim
about screen budget, and the 0.3.0 Touch re-derivation had already
ruled that smuggling screen budget into the density axis was the whole
bug the old Touch preset embodied — it just had nowhere else to put it,
because SizeClass did not exist yet. It does now, so the claim goes
where it belongs and the quoted Pointer values hold.
Two things fall out. There is no need for a Step at 7/8 = 14, which
is off the eighths scale and would have wanted a public name; both
compact values are already on it. And no consumer migrates, because no
quoted value changed.
Sourcepub const fn px_at(self, density: Density) -> u16
pub const fn px_at(self, density: Density) -> u16
Size in CSS pixels at the default base, at a given density.
Sourcepub const fn px_at_size(self, density: Density, size: SizeClass) -> u16
pub const fn px_at_size(self, density: Density, size: SizeClass) -> u16
Size in CSS pixels at the default base, at a given density and window size class.