use essential_types::{solution::SolutionSet, ContentAddress};
pub fn from_set(set: &SolutionSet) -> ContentAddress {
let solution_addrs = set.solutions.iter().map(crate::content_addr);
from_solution_addrs(solution_addrs)
}
pub fn from_solution_addrs(
solution_addrs: impl IntoIterator<Item = ContentAddress>,
) -> ContentAddress {
let mut solution_addrs: Vec<_> = solution_addrs.into_iter().collect();
from_solution_addrs_slice(&mut solution_addrs)
}
pub fn from_solution_addrs_slice(solution_addrs: &mut [ContentAddress]) -> ContentAddress {
solution_addrs.sort();
ContentAddress(crate::hash_bytes_iter(
solution_addrs.iter().map(|addr| &addr.0[..]),
))
}