furiosa_visa_std/vector_engine/
scalar.rs

1//! VeScalar trait for Vector Engine scalar types.
2
3use crate::scalar::Scalar;
4
5/// The kind of scalar type supported by Vector Engine.
6#[derive(Debug, PartialEq, Eq)]
7pub enum VeScalarKind {
8    /// 32-bit floating point.
9    F32,
10    /// 32-bit integer.
11    I32,
12}
13
14/// Marker trait for scalar types supported by Vector Engine.
15/// Only i32 and f32 are supported.
16///
17/// This trait is sealed and cannot be implemented outside this module.
18pub trait VeScalar: Scalar {
19    /// The kind of this scalar type.
20    const KIND: VeScalarKind;
21}
22
23impl VeScalar for i32 {
24    const KIND: VeScalarKind = VeScalarKind::I32;
25}
26
27impl VeScalar for f32 {
28    const KIND: VeScalarKind = VeScalarKind::F32;
29}