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}