Skip to main content

cbor_wire_valid

Function cbor_wire_valid 

Source
pub open spec fn cbor_wire_valid<const DET: bool>(
    wire: (CborHead, Sum<(), Sum<(), Sum<Seq<u8>, Sum<(Seq<Seq<u8>>, u8), Sum<Seq<char>, Sum<(Seq<Seq<char>>, u8), Sum<Seq<CborValueSpec>, Sum<(Seq<CborValueSpec>, u8), Sum<Seq<(CborValueSpec, CborValueSpec)>, Sum<(Seq<(CborValueSpec, CborValueSpec)>, u8), Sum<CborValueSpec, Sum<(), Never>>>>>>>>>>>>),
) -> bool
Expand description
{
    #[verusfmt::skip]
    match wire {
        (
            CborHead { major: MajorType::Unsigned, value: CborHeadValue::Argument(_) },
            L(()),
        ) => true,
        (
            CborHead { major: MajorType::Negative, value: CborHeadValue::Argument(_) },
            R(L(())),
        ) => true,
        (
            CborHead { major: MajorType::Bytes, value: CborHeadValue::Argument(len) },
            R(R(L(bytes))),
        ) => len == bytes.len(),
        (
            CborHead { major: MajorType::Bytes, value: CborHeadValue::Indefinite },
            R(R(R(L(_)))),
        ) => !DET,
        (
            CborHead { major: MajorType::Text, value: CborHeadValue::Argument(len) },
            R(R(R(R(L(text))))),
        ) => len == vstd::utf8::encode_utf8(text).len(),
        (
            CborHead { major: MajorType::Text, value: CborHeadValue::Indefinite },
            R(R(R(R(R(L(_)))))),
        ) => !DET,
        (
            CborHead { major: MajorType::Array, value: CborHeadValue::Argument(len) },
            R(R(R(R(R(R(L(values))))))),
        ) => len == values.len(),
        (
            CborHead { major: MajorType::Array, value: CborHeadValue::Indefinite },
            R(R(R(R(R(R(R(L(_)))))))),
        ) => !DET,
        (
            CborHead { major: MajorType::Map, value: CborHeadValue::Argument(len) },
            R(R(R(R(R(R(R(R(L(entries))))))))),
        ) => len == entries.len(),
        (
            CborHead { major: MajorType::Map, value: CborHeadValue::Indefinite },
            R(R(R(R(R(R(R(R(R(L(_)))))))))),
        ) => !DET,
        (
            CborHead { major: MajorType::Tag, value: CborHeadValue::Argument(_) },
            R(R(R(R(R(R(R(R(R(R(L(_))))))))))),
        ) => true,
        (
            CborHead { major: MajorType::Simple, value },
            R(R(R(R(R(R(R(R(R(R(R(L(())))))))))))),
        ) => {
            match value {
                CborHeadValue::Float(_) => true,
                CborHeadValue::Simple(value) => value <= 23u8 || value >= 32u8,
                _ => false,
            }
        }
        _ => false,
    }
}