Skip to main content

max / quasi

Let an interval be told the name its upper end submits under Field::interval takes it as an argument, which a description cannot reach: the field production says a kind, a name and a label, and everything else about a field is a setting in its body. Without the builder the only described spelling of audiofiles' filter panel was the whole Field written out as an aggregate, which is the expression the form exists to refuse. The constructor stays what a hand-written caller should take, and its doc still says why the names are arguments there.
Author: Max Johnson <me@maxj.phd> · 2026-09-04 21:09 UTC
Signed with PGP, not checked
Commit: 8cf758e3416fa0c1d295e14806103df88a4d0a92
Parent: 5191126
2 files changed, +20 insertions, -1 deletion
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-router"
3 - version = "0.101.13"
3 + version = "0.101.14"
4 4 description = "Host-agnostic router: a request in, a renderer-agnostic description out"
5 5 edition.workspace = true
6 6 rust-version.workspace = true
@@ -3673,6 +3673,25 @@
3673 3673 }
3674 3674 }
3675 3675
3676 + /// The name the upper end submits under, for an interval built by hand.
3677 + ///
3678 + /// [`interval`](Self::interval) is still the entry point a hand-written
3679 + /// caller should take, and its doc says why the names are arguments there.
3680 + /// This exists because a description cannot reach a three-argument
3681 + /// constructor: `quasi-declare`'s `field` production says a kind, a name
3682 + /// and a label, and everything else about a field is a setting in its body.
3683 + /// audiofiles' filter panel is the site -- six intervals, and without this
3684 + /// the only described spelling was the whole `Field` written out as an
3685 + /// aggregate, which is the expression the form exists to refuse.
3686 + ///
3687 + /// Pairs with [`upper_value`](Self::upper_value), which names the same end's
3688 + /// answer.
3689 + #[must_use]
3690 + pub fn upper_name(mut self, name: impl Into<String>) -> Self {
3691 + self.upper_name = Some(name.into());
3692 + self
3693 + }
3694 +
3676 3695 /// The granularity the value moves in.
3677 3696 ///
3678 3697 /// A builder rather than a fourth argument to [`range`](Self::range): the