Skip to content

Instantly share code, notes, and snippets.

@dylanede
dylanede / list merge.rs
Created February 19, 2016 17:29 — forked from anonymous/playground.rs
Shared via Rust Playground
trait Merge<A, B> {
type Out;
fn merge(a: A, b: B) -> Self::Out;
}
type MergeOut<A, B> = <() as Merge<A, B>>::Out;
fn merge<A, B>(a: A, b: B) -> MergeOut<A, B> where (): Merge<A, B> {
<() as Merge<A, B>>::merge(a, b)
}
struct Unknown;
macro_rules! derive_merge_unknown {
@dylanede
dylanede / playground.rs
Created April 26, 2016 13:00 — forked from anonymous/playground.rs
Static string hash map optimisations
use std::cell::RefCell;
use std::collections::HashMap;
use std::hash::{ Hash, SipHasher, Hasher };
thread_local!(static SYMBOL_HASHES: RefCell<HashMap<(*const u8, usize), u64>> = RefCell::new(HashMap::new()));
struct StaticSymbol {
string: &'static str,
hash: u64,
}
@dylanede
dylanede / playground.rs
Last active August 25, 2017 15:20 — forked from anonymous/playground.rs
Rust code shared from the playground
// Need an endpoint to drive everything (provide top level criteria) - Nodes don't actually have the data going through them - only construct and modify callbacks
// Need an abstraction for a dynamically updating time serise - notification of points adding, updating and removing, refreshing - NOT a stream, kind of like a signal for multiple values in parallel
// Node - given criteria object, constructs a collection of output points, delegating where necessary
// criteria object may be modified at runtime - node should then modify the subscription
// Should be possible to have node sub-graph templates (maybe just functions) for generation based on changes in data source sets
// Internally to the graph, criteria may be dynamically updated at run time (e.g. to implement "join-on")
// Criteria: