decouples meals generation
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
//! The weekly menu planner
|
||||
//!
|
||||
|
||||
use cookbook::Meal;
|
||||
use cookbook::{Meal, fetch_meals};
|
||||
use planner::solver::{Variables, Domain, solve_all};
|
||||
|
||||
|
||||
@@ -11,10 +11,7 @@ fn generate_weekly_menu() -> String {
|
||||
("MardiMidi".to_string(), None), ("MardiSoir".to_string(), None),
|
||||
("MercrediMidi".to_string(), None), ("MercrediSoir".to_string(), None),
|
||||
].iter().cloned().collect();
|
||||
let meals: Domain<Meal> = Domain::new(vec![
|
||||
Meal::new("Raclette".to_string(), 800),
|
||||
Meal::new("Soupe".to_string(), 400),
|
||||
]);
|
||||
let meals: Domain<Meal> = Domain::new(fetch_meals());
|
||||
let validator = |vars: &Variables<Meal>| {
|
||||
let mut result = true;
|
||||
for day in ["Lundi", "Mardi", "Mercredi"].into_iter() {
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
//! # Solver
|
||||
//!
|
||||
//! Provides `Variables`, `Domain` structs and `solve_all` function.
|
||||
use std::fmt;
|
||||
use std::clone::Clone;
|
||||
use std::collections::HashMap;
|
||||
|
||||
/// An assignments map of variables
|
||||
pub type Variables<'a, V> = HashMap<String, Option<&'a V>>;
|
||||
|
||||
enum Assignment<'a, V> {
|
||||
@@ -10,6 +14,7 @@ enum Assignment<'a, V> {
|
||||
}
|
||||
|
||||
|
||||
/// The domain of values that can be assigned to variables
|
||||
#[derive(Clone)]
|
||||
pub struct Domain<V> {
|
||||
values: Vec<V>
|
||||
|
||||
Reference in New Issue
Block a user