pub struct PartitionKey(/* private fields */);Expand description
Opaque routing handle for a partition, as exchanged on public wire surfaces.
PartitionKey is the hash-tag literal ("{fp:7}", "{b:0}", …)
wrapped in a #[serde(transparent)] newtype. It is the wire form
of Partition on the public API — crates like ff-server and
ff-sdk exchange PartitionKey, not Partition, so the
internal PartitionFamily enum (with its RFC-011 §11 alias
between Flow and Execution) is never exposed on the wire.
§Opaque-ness contract
Consumers MUST treat a PartitionKey as opaque: pass it back to
FlowFabric on subsequent calls, but do NOT parse the interior hash
tag to make routing or policy decisions. Compatibility is only
guaranteed for opaque round-tripping of keys PRODUCED by
FlowFabric — consumers must not hand-construct hash-tag strings
nor rely on non-canonical shapes being accepted. FlowFabric may
narrow the accepted shape (e.g. hash-tag alphabet, length bounds)
in future minor releases for producer-minted keys without a
semver bump, because every such key still round-trips under the
new rules. Consumers that need the parsed form call
PartitionKey::parse / Self::as_partition, which returns a
typed error on malformed input.
§Round-trip + alias collapse
From<&Partition> -> PartitionKey is infallible (hash-tag
construction never fails). PartitionKey::parse → Partition is
fallible (rejects malformed keys). The round trip
Partition -> PartitionKey -> Partition is lossy for the
Execution alias — a Partition { family: Execution, .. }
produces "{fp:N}", which parses back to
Partition { family: Flow, .. }. Routing and key construction are
unaffected (both families emit identical hash tags under RFC-011
§11), but consumers that read grant.partition()?.family for
logging will see Flow where Execution previously appeared.
Implementations§
Source§impl PartitionKey
impl PartitionKey
Sourcepub fn as_str(&self) -> &str
pub fn as_str(&self) -> &str
Return the underlying hash-tag literal ("{fp:7}"). Intended
for consumers that pass the key through to another FlowFabric
call; NOT for parsing out the partition family/index.
Sourcepub fn parse(&self) -> Result<Partition, PartitionKeyParseError>
pub fn parse(&self) -> Result<Partition, PartitionKeyParseError>
Parse a hash-tag literal into a typed Partition. Accepts
the exact shape produced by Partition::hash_tag ({fp:N},
{b:N}, {q:N} where N is a u16).
Sourcepub fn as_partition(&self) -> Result<Partition, PartitionKeyParseError>
pub fn as_partition(&self) -> Result<Partition, PartitionKeyParseError>
Convenience alias for Self::parse. Present so callers
reading a ClaimGrant.partition() helper can chain without
naming the conversion explicitly.
Trait Implementations§
Source§impl Clone for PartitionKey
impl Clone for PartitionKey
Source§fn clone(&self) -> PartitionKey
fn clone(&self) -> PartitionKey
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more