Mojo struct
Variadic
struct Variadic
A namespace for variadic utilities.
Implemented traits
AnyType,
UnknownDestructibility
Aliases
__del__is_trivial
comptime __del__is_trivial = True
concat
comptime concat[T: AnyTrait[AnyType], //, *Ts: Variadic[T]] = #kgen.variadic.concat<#kgen.param.decl.ref<"Ts"> : !kgen.variadic<variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> T>>>
Represents the concatenation of multiple variadic sequences of types.
Parameters
- T (
AnyTrait): - *Ts (
Variadic):
contains
comptime contains[Trait: AnyTrait[AnyType], //, type: Trait, element_types: Variadic[Trait]] = #kgen.variadic.reduce<#kgen.variadic<{:i1 0}> : !kgen.variadic<!lit.struct<@stdlib::@builtin::@bool::@Bool>>, #kgen.param.decl.ref<"element_types"> : !kgen.variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> Trait>, #kgen.gen<[cond(eq(:type !kgen.param<:!kgen.param<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> Trait> variadic_get(:variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> Trait> *(0,1), *(0,2))>, !kgen.param<:!kgen.param<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> Trait> type>), sugar_builtin(apply(:!lit.generator<() -> !lit.struct<@stdlib::@builtin::@bool::@Bool>> @stdlib::@sys::@intrinsics::@"_type_is_eq_parse_time[::AnyType,::AnyType]()"<:trait<@stdlib::@builtin::@anytype::@AnyType> !kgen.param<:!kgen.param<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> Trait> variadic_get(:variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> Trait> *(0,1), *(0,2))>, :trait<@stdlib::@builtin::@anytype::@AnyType> !kgen.param<:!kgen.param<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> Trait> type>>), {_mlir_value: i1 = eq(:type !kgen.param<:!kgen.param<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> Trait> variadic_get(:variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> Trait> *(0,1), *(0,2))>, !kgen.param<:!kgen.param<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> Trait> type>)}), variadic_get(:variadic<!lit.struct<@stdlib::@builtin::@bool::@Bool>> *(0,0), 0))]> : !kgen.generator<!lit.generator<<"PrevV": variadic<!lit.struct<@stdlib::@builtin::@bool::@Bool>>, "VA": variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> Trait>, "idx": index>variadic<!lit.struct<@stdlib::@builtin::@bool::@Bool>>>>>[0]
Check if a type is contained in a variadic sequence.
Parameters
- Trait (
AnyTrait): The trait that the types conform to. - type (
Trait): The type to check for. - element_types (
Variadic): The variadic sequence of types to search.
empty_of_trait
comptime empty_of_trait[T: AnyTrait[AnyType]]
Empty comptime variadic of type values.
Parameters
- T (
AnyTrait):
empty_of_type
reverse
comptime reverse[T: AnyTrait[AnyType], //, *element_types: T] = #kgen.variadic.reduce<#kgen.variadic<> : !kgen.variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> T>, #kgen.param.decl.ref<"element_types"> : !kgen.variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> T>, #kgen.gen<#kgen.variadic.concat<#kgen.variadic<*(0,0), [variadic_get(:variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> T> *(0,1), add(mul(*(0,2), -1), #kgen.variadic.size<#kgen.param.index.ref<0, 1> : !kgen.variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> T>>, -1))]> : !kgen.variadic<variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> T>>>> : !kgen.generator<!lit.generator<<"PrevV": variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> T>, "VA": variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> T>, "idx": index>variadic<:!lit.anytrait<<@stdlib::@builtin::@anytype::@AnyType>> T>>>>
A wrapper to reverse a variadic sequence of types.
Parameters
- T (
AnyTrait): The trait that the types conform to. - *element_types (
T): The variadic sequence of types to reverse.
splat
comptime splat[type: AnyType, count: Int] = #kgen.variadic.splat<:trait<@stdlib::@builtin::@anytype::@AnyType> *"type", #lit.struct.extract<:!lit.struct<@stdlib::@builtin::@int::@Int> count, "_mlir_value"> : index>
Splat a type into a variadic sequence. Parameters: type: The type to splat. count: The number of times to splat the type.
Parameters
types
comptime types[T: AnyTrait[AnyType], //, *Ts: T] = Ts
Turn discrete type values (bound by T) into a single variadic.
Parameters
- T (
AnyTrait): - *Ts (
T):
TypesOfTrait
comptime TypesOfTrait[T: AnyTrait[AnyType]] = Variadic[T]
Represents a raw variadic sequence of types that satisfy the specified trait.
Parameters
- T (
AnyTrait):
values
comptime values[T: AnyType, //, *values_: T] = values_
Turn discrete value (bound by T) into a single variadic.
Parameters
- T (
AnyType): - *values_ (
T):
ValuesOfType
comptime ValuesOfType[type: AnyType] = Variadic[type]
Represents a raw variadic sequence of values of the specified type.
Parameters
- type (
AnyType):
Methods
size
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!