Skip to content

Instantly share code, notes, and snippets.

@kyleheadley
kyleheadley / listsearch.rs
Created August 1, 2017 16:32
Demonstrate searching a type-level list in rust
#![allow(dead_code)]
struct True;
struct False;
impl IsEqual<False> for True {type Out=False;}
impl IsEqual<False> for False {type Out=True;}
impl IsEqual<True> for True {type Out=True;}
impl IsEqual<True> for False {type Out=False;}
trait Nat {fn inst()->usize;}
struct Zero;
@kyleheadley
kyleheadley / type_fns.rs
Last active July 28, 2017 21:46
Show off type functions in rust with an example of 'type constructors'
// emulates the type of a function from types 'E' to sequence-like types
pub trait SeqTypeFn<E> { type Result : SeqLike<E>; }
// sequence-like interface
pub trait SeqLike<E>{
fn new() -> Self;
fn push(self,e:E) -> Self;
fn first(&self) -> Option<&E>;
}
@kyleheadley
kyleheadley / impl-eq-types.rs
Created July 10, 2017 16:54
Possible alternative for missing type equality in rust trait impl's
trait F<V,X> {}
struct D;
trait TheV2 {
type IsThis;
}
impl<V1,V2> TheV2 for F<V1,V2> {
type IsThis = V2;
@kyleheadley
kyleheadley / door_state.rs
Created July 5, 2017 22:39
FSM example in rust
#![allow(unused)]
use std::fmt::Debug;
#[derive(Debug)]
struct Door<S: DoorState> {
state: S,
}
trait DoorState {}
@kyleheadley
kyleheadley / sp17-proposal.md
Last active March 20, 2017 15:18
CSCI 7000 Spring '17 -- Course Project Proposal

CSCI 7000 -- Course Project Proposal

Student name: Kyle Headley

Project Description:

  • Project kind: IC library implementation
  • Project details: Extend the rust implementation of the RAZ with additional incremental features.
@kyleheadley
kyleheadley / monad.rs
Last active February 8, 2017 18:20
Prototype implementation of Monads in Rust
use std::fmt::Display;
trait Monadic {}
#[derive(Debug)]
struct Monad<M:Monadic,T>(M,T);
#[derive(Debug)]
struct Opt(bool);
impl Monadic for Opt {}
impl<T:Default> Monad<Opt,T> {