Skip to main content

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

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

comptime empty_of_type[T: AnyType]

Empty comptime variadic of values.

Parameters

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

ValuesOfType

comptime ValuesOfType[type: AnyType] = Variadic[type]

Represents a raw variadic sequence of values of the specified type.

Parameters

Methods

size

static size[T: AnyType](seq: Variadic[T]) -> Int

Returns the length of a variadic sequence.

Parameters:

  • T (AnyType): The type of values in the sequence.

Args:

  • seq (Variadic): The variadic sequence to measure.

Returns:

Int: The length of the variadic sequence.

static size[T: AnyTrait[AnyType]](seq: Variadic[T]) -> Int

Returns the length of a variadic sequence.

Parameters:

  • T (AnyTrait): The trait that types in the sequence must conform to.

Args:

  • seq (Variadic): The variadic sequence of types to measure.

Returns:

Int: The length of the variadic sequence.

Was this page helpful?