Ask whether a rule gives the length, not whether there is one

`Painter::ruled` answered "is there a rule beside me on this axis", which is
the same question as "is my report moot" only while `Exact` is the only rule
there is. `Min`, `Max` and `Clamp` are queued, and under one of those the
answer is still the widget's to give and a span across itself still has to
read its children -- so the name would have been true and the meaning wrong,
which is the worst way for a predicate to age.

It is `has_exact_size` now, over `SizeRule::exact` rather than `known`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
iris-aiandClaude Opus 5 committed 2026-09-16 13:40:51 -04:00
1 parent a8898aaa54
commit 490918b789
4 files changed
+24 -17

No files matched your search

+6 -5
View File
@@ -29,11 +29,12 @@ impl SizeRule {
}
}
/// The length this rule fixes, whether or not it can narrow a box. A
/// share is a length the widget's parent still has to divide, so it is
/// known here and resolved there -- unlike `declared`, which is only the
/// ones that give a box directly.
pub fn known(&self) -> Option<LayoutLen> {
/// The length this rule gives outright, whatever the widget reports --
/// which makes the widget's answer on that axis moot. A share counts: it
/// is a length the widget's parent still has to divide, so it is exact
/// here and resolved there, unlike `declared`, which is only the ones
/// that give a box directly.
pub fn exact(&self) -> Option<LayoutLen> {
match self {
Self::Free => None,
Self::Exact(len) => Some(*len),