pub trait LayoutSelector {
// Required methods
fn select_by_scalar(
&self,
kind: &str,
layouts: &[(Scalar, LayoutRegionNode)],
) -> Result<LayoutRegionNode, Error>;
fn select_by_str(
&self,
kind: &str,
layouts: &[(Arc<str>, LayoutRegionNode)],
) -> Result<LayoutRegionNode, Error>;
// Provided method
fn resolve_indirect(&self, ind: usize) -> Result<&LayoutRegion, Error> { ... }
}