Exact appointments, native profile exact-offset-interval-v1. Both endpoints
are complete OffsetTimestamp declarations, separated by one slash. The start
is inclusive and the end exclusive, with start strictly before end after
resolving each supplied offset. Canonical text retains endpoint declarations,
including fractional width and asserted versus unasserted offsets.
RFC 3339 does not specify interval syntax: this composition is a native
contract, not an ISO/EDTF conformance claim. Bare dates, durations, abbreviated
or missing endpoints and annotations are unsupported by this exact profile.
Date-only EDTF endpoints mean something different and are never inferred here.
Parsing accepts at most 513 UTF-8 bytes (two 256-byte timestamp limits
plus a separator). All construction, conversion and output work is bounded.
Span projection discards source presentation explicitly; declaration equality
retains it. Uncertain endpoints and original source spelling are not retained.
Use canonical text for interchange. See OffsetTimestamp for endpoint limits.
parser_for : encoding -> (state -> Try({ value : ExactInterval, rest : state }, [InvalidExactInterval(Error), Encoding(err), ..]))
where [
encoding.parse_str : encoding, state -> Try({ value : Str, rest : state }, err),
]
Decode one encoded string using this type's text parser.
Encoding failures remain distinct from this profile's validation errors.
The encoding owns framing and its work limits; parse bounds the decoded text.
encoder_for : encoding -> (ExactInterval, state -> Try(state, err))
where [
encoding.encode_str : Str, state -> Try(state, err),
]
Encodes the canonical standard text as a string in the selected encoding; encoding failures pass through.