use crate::block_sparse::{Direction, QNIndex};
use crate::sector::Sector;
pub fn legs<S: Sector>(
specs: impl IntoIterator<Item = (Vec<(S, usize)>, Direction)>,
) -> Vec<QNIndex<S>> {
specs
.into_iter()
.map(|(sectors, direction)| QNIndex::new(sectors, direction))
.collect()
}
pub fn out_in_legs<S: Sector>(row: Vec<(S, usize)>, col: Vec<(S, usize)>) -> Vec<QNIndex<S>> {
legs([(row, Direction::Out), (col, Direction::In)])
}
pub fn square_legs<S: Sector>(sectors: Vec<(S, usize)>) -> Vec<QNIndex<S>> {
out_in_legs(sectors.clone(), sectors)
}