wip: heuristics engine
This commit is contained in:
1 parent
00231adfa2
commit
6aaad1c9ef
3 files changed
+46
No files matched your search
@@ -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();
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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>(),
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user