struct StaticArray(T, N)
Overview
A fixed-size, stack allocated array.
StaticArray
is a generic type with type argument T
specifying the type of
its elements and N
the fixed size. For example StaticArray(Int32, 3)
is a static array of Int32
with three elements.
Instantiations of this static array type:
StaticArray(Int32, 3).new(42) # => StaticArray[42, 42, 42]
StaticArray(Int32, 3).new { |i| i * 2 } # => StaticArray[0, 2, 4]
StaticArray[0, 8, 15] # => StaticArray[0, 8, 15]
This type can also be expressed as Int32[3]
(only in type grammar). A typical use
case is in combination with uninitialized
:
ints = uninitialized Int32[3]
ints[0] = 0
ints[1] = 8
ints[2] = 15
For number types there is also Number.static_array
which can be used to initialize
a static array:
Int32.static_array(0, 8, 15) # => StaticArray[0, 8, 15]
The generic argument type N
is a special case in the type grammar as it
doesn't specify a type but a size. Its value can be an Int32
literal or
constant.
Included Modules
- Comparable(StaticArray(T, N))
- Indexable::Mutable(T)
Defined in:
ssz/codec.crssz/hash_tree_root.cr
Class Method Summary
Instance Method Summary
Instance methods inherited from module Enumerable(T)
hash_tree_root : Bytes
hash_tree_root,
ssz_basic? : Bool
ssz_basic?,
ssz_encode(io : IO)
ssz_encode,
ssz_size : Int32
ssz_size,
ssz_variable? : Bool
ssz_variable?
Class methods inherited from module Enumerable(T)
ssz_basic? : Bool
ssz_basic?
Instance methods inherited from class Object
ssz_basic? : Bool
ssz_basic?,
ssz_encode(io : IO)ssz_encode : Bytes ssz_encode, ssz_fixed? : Bool ssz_fixed?, ssz_size : Int32 ssz_size, ssz_variable? : Bool ssz_variable?
Class methods inherited from class Object
ssz_basic? : Bool
ssz_basic?,
ssz_decode(io : IO, size : Int32 = 0)ssz_decode(bytes : Bytes) ssz_decode, ssz_fixed? : Bool ssz_fixed?, ssz_variable? : Bool ssz_variable?