Yes, this is probably too many changes in one PR but if you're interested I'm willing to do the work in splitting them out.
323bce9 just runs all the code through rustfmt.
dd035dc removes a couple of mut declarations the linter was complaining about.
b4cee90 updates everything to Rust 2018.
fc27e0c is the big one: it removes the explicit lifetime declarations and uses Rc instead to maintain pointers without needing consumers of the library to explicitly declare lifetimes too.
Yes, this is probably too many changes in one PR but if you're interested I'm willing to do the work in splitting them out.
323bce9 just runs all the code through rustfmt. dd035dc removes a couple of
mut
declarations the linter was complaining about. b4cee90 updates everything to Rust 2018. fc27e0c is the big one: it removes the explicit lifetime declarations and uses Rc instead to maintain pointers without needing consumers of the library to explicitly declare lifetimes too.All tests still pass.