blob: 77ebc812d510b7950dfbafbe15f4db76d630e7f3 [file] [log] [blame]
//! An empty [`Records`] implementation.
use core::iter::{repeat, Repeat, Take};
use super::Records;
/// Empty representation of [`Records`].
#[derive(Debug, Default, Clone)]
pub struct EmptyRecords {
rows: usize,
cols: usize,
}
impl EmptyRecords {
/// Constructs an empty representation of [`Records`] with a given shape.
pub fn new(rows: usize, cols: usize) -> Self {
Self { rows, cols }
}
}
impl From<(usize, usize)> for EmptyRecords {
fn from((count_rows, count_columns): (usize, usize)) -> Self {
Self::new(count_rows, count_columns)
}
}
impl Records for EmptyRecords {
type Iter = Take<Repeat<Take<Repeat<&'static str>>>>;
fn iter_rows(self) -> Self::Iter {
repeat(repeat("").take(self.cols)).take(self.rows)
}
fn count_columns(&self) -> usize {
self.cols
}
fn hint_count_rows(&self) -> Option<usize> {
Some(self.rows)
}
}