pub struct TokenEnum { /* private fields */ }Expand description
A Rust enum over one token attribute’s allowedTokens.
Generation is opt-in and explicit, because a token set is not an identity: two properties can admit the same tokens and mean different things, and two properties meaning the same thing can declare different fallbacks. So the enum is named here and sourced from the one property that defines it. Nothing else is associated with it — a property admitting the same tokens is free to use it or not, and the generated accessors are unchanged either way.
use openusd_build::TokenEnum;
openusd_build::configure()
.schema("schemas/usdGeom/schema.usda")
.token_enum(TokenEnum::new("Purpose", "usdGeom", "Imageable.purpose").with_default())
.generate()?;Implementations§
Source§impl TokenEnum
impl TokenEnum
Sourcepub fn new(
name: impl Into<String>,
library: impl Into<String>,
source: impl Into<String>,
) -> Self
pub fn new( name: impl Into<String>, library: impl Into<String>, source: impl Into<String>, ) -> Self
An enum called name over the allowedTokens of source, a property
of library named Class.property.
Class is the schema’s registered identifier, as the class prim spells
it, not the Rust name its className may ask for.
Sourcepub fn with_default(self) -> Self
pub fn with_default(self) -> Self
Derives Default from the source property’s fallback.
Off unless asked for: a token set carries no default of its own, and the
corpus shows why — guideVisibility falls back to invisible where
proxyVisibility and renderVisibility fall back to inherited, all
three admitting the same tokens. So the default is the source
property’s, said explicitly, and a source with no token fallback is an
error rather than a guess.
Sourcepub fn variant(
self,
token: impl Into<String>,
variant: impl Into<String>,
) -> Self
pub fn variant( self, token: impl Into<String>, variant: impl Into<String>, ) -> Self
Spells the variant for token rather than casing it.
For a token Rust has no name for — an empty spelling, one opening with a digit — and for two tokens that would otherwise reach one name. Naming a token the source property does not admit is an error, so an override cannot quietly do nothing.