pub struct NestedSchema(/* private fields */);Expand description
A schema nested inside another schema.
get borrows the nested schema. Nearly always that schema is
owned or shared like any other; the exception is a $ref that points back
at a schema which contains it (a tree node whose children are nodes, say).
Such an edge is recursive and holds only a weak
pointer, because a cycle of owning pointers would never be freed. Which
edge of a cycle is the recursive one is decided by document order: it is
the first $ref, walking components then paths, that closes the cycle.
Within one schema its kind (type, properties, oneOf, …) is walked
before its discriminator mapping, so a cycle that could close through
either closes through the kind.
The weak pointer always upgrades: every schema a $ref can name lives in
the document’s components, and this edge can only be reached by
borrowing from that document.
Two recursive edges are equal when they point at the same allocation, so comparing two independently resolved documents that contain a cycle reports them as different.
Implementations§
Source§impl NestedSchema
impl NestedSchema
Sourcepub fn get(&self) -> SchemaGuard<'_>
pub fn get(&self) -> SchemaGuard<'_>
Borrows the nested schema.
Sourcepub fn is_recursive(&self) -> bool
pub fn is_recursive(&self) -> bool
Whether this edge points back at a schema that contains it.