Skip to main content

burn_tensor/tensor/
kind.rs

1// Sealed traits, limited to Bool, Float and Int types which implement the pub(crate) traits.
2#![allow(private_bounds)]
3
4#[cfg(feature = "extension")]
5pub use crate::bridge::BridgeTensor;
6
7pub use crate::bridge::{Bool, Float, Int, Kind, TensorKind};
8
9/// The base trait for any tensor kind.
10pub trait Basic: crate::ops::BasicOps {}
11impl<K: crate::ops::BasicOps> Basic for K {}
12
13/// Kinds that support numeric operations.
14pub trait Numeric: Basic + crate::ops::Numeric {}
15impl<K: Basic + crate::ops::Numeric> Numeric for K {}
16
17/// Kinds that support ordered operations.
18pub trait Ordered: Numeric + crate::ops::Ordered {}
19impl<K: Numeric + crate::ops::Ordered> Ordered for K {}
20
21/// Kinds that support float math operations.
22pub trait FloatMath: Numeric + crate::ops::FloatMathOps {}
23impl<K: Numeric + crate::ops::FloatMathOps> FloatMath for K {}
24
25/// Kinds that support transaction operations.
26pub trait Transaction: Basic + crate::ops::TransactionOp {}
27impl<K: Basic + crate::ops::TransactionOp> Transaction for K {}
28
29/// Kinds that support autodiff operations.
30// #[cfg(feature = "autodiff")]
31pub trait Autodiff: Basic + crate::ops::BasicAutodiffOps {}
32// #[cfg(feature = "autodiff")]
33impl<K: crate::ops::BasicAutodiffOps> Autodiff for K {}