TooManyValues => concat!("Too many values: ", $property_name, " property accepts at most 4 values."),
TooFewValues => concat!("Too few values: ", $property_name, " property requires at least 1 value."),
#[allow(variant_size_differences)] // repr(C,u8) FFI enum: boxing the large variant would change the C ABI (api.json bindings); size disparity accepted
#[allow(variant_size_differences)] // repr(C,u8) FFI enum: boxing the large variant would change the C ABI (api.json bindings); size disparity accepted
pub fn parse_layout_margin(input: &str) -> Result<LayoutMargin, LayoutMarginParseError<'_>> {
#![allow(clippy::float_cmp)] // fixed-point quantisation makes exact f32 compares meaningful here
assert!(parse_layout_padding_inline_start($input).is_err(), "padding-inline-start accepted {:?}", $input);
assert!(parse_layout_padding_inline_end($input).is_err(), "padding-inline-end accepted {:?}", $input);