wip: heuristics engine

This commit is contained in:
Jonathan Kelley committed 2021-07-15 04:17:45 -04:00
1 parent 00231adfa2
commit 6aaad1c9ef
3 files changed
+46

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
use std::collections::HashMap;
use crate::FC;
pub(crate) struct HeuristicsEngine {
heuristics: HashMap<FcSlot, Heuristic>,
}
pub(crate) type FcSlot = *const ();
pub(crate) struct Heuristic {
hooks: u32,
bump_size: u64,
}
impl HeuristicsEngine {
pub(crate) fn new() -> Self {
Self {
heuristics: HashMap::new(),
}
}
fn recommend<T>(&mut self, fc: FC<T>, heuristic: Heuristic) {
let g = fc as FcSlot;
let e = self.heuristics.entry(g);
}
fn get_recommendation<T>(&mut self, fc: FC<T>) -> &Heuristic {
let id = fc as FcSlot;
self.heuristics.entry(id).or_insert(Heuristic {
bump_size: 100,
hooks: 10,
})
}
}
#[test]
fn types_work() {
let engine = HeuristicsEngine::new();
}
+2
View File
@@ -34,6 +34,7 @@ pub(crate) mod innerlude {
pub use crate::editor::*;
pub use crate::error::*;
pub use crate::events::*;
pub use crate::heuristics::*;
pub use crate::hooklist::*;
pub use crate::nodes::*;
pub use crate::scope::*;
@@ -59,6 +60,7 @@ pub mod diff;
pub mod editor;
pub mod error;
pub mod events;
pub mod heuristics;
pub mod hooklist;
pub mod nodes;
pub mod scope;
+3
View File
@@ -60,6 +60,8 @@ pub struct VirtualDom {
pub tasks: TaskQueue,
heuristics: HeuristicsEngine,
root_props: std::pin::Pin<Box<dyn std::any::Any>>,
/// Type of the original props. This is stored as TypeId so VirtualDom does not need to be generic.
@@ -168,6 +170,7 @@ impl VirtualDom {
components,
root_props,
tasks,
heuristics: HeuristicsEngine::new(),
triggers: Default::default(),
_root_prop_type: TypeId::of::<P>(),
}