ruprim/reduce/components/readers/
unit.rs1use ruda_kernel::dsl as kernel_dsl;
2use crate::reduce::{
3 ReducePrecision,
4 components::{
5 instructions::Item,
6 readers::{Reader, ReaderExpand},
7 },
8};
9use ruda_kernel::dsl::prelude::*;
10
11#[derive(RudaType)]
12pub struct UnitReader<P: ReducePrecision> {
13 reader: Reader<P>,
14}
15
16#[ruda]
17#[allow(clippy::len_without_is_empty)]
18impl<P: ReducePrecision> UnitReader<P> {
19 pub fn new(reader: Reader<P>) -> UnitReader<P> {
20 UnitReader::<P> { reader }
21 }
22
23 pub fn read(&self, vector_index: usize) -> Item<P> {
24 match &self.reader {
25 Reader::Parallel(reader) => reader.read_unit(vector_index),
26 Reader::Perpendicular(reader) => reader.read_unit(vector_index),
27 }
28 }
29
30 pub fn length(&self) -> usize {
31 match &self.reader {
32 Reader::Parallel(reader) => reader.length_unit(),
33 Reader::Perpendicular(reader) => reader.length_unit(),
34 }
35 }
36}