pub mod kmeans; pub mod clusterable; pub use kmeans::Kmeans; pub use clusterable::Clusterable; pub enum Error { IterationsLimitExceeded, } pub fn kmeans(centroids: Vec, data: Vec, max_iterations: usize) -> Result<(Kmeans, usize), Error> { let mut kmeans = Kmeans::new(centroids, data); for nb_iterations in 0..max_iterations { let stable = kmeans.iterate(); if stable { return Ok((kmeans, nb_iterations)); } } Err(Error::IterationsLimitExceeded) }