dd76827ca5ec408035f1deea91793f102d71487a of emscripten RSTODO, RSNOTE why does panic in match arms in rust not type check as *, whereas it does for functions? see setBlockContent DEBUG=1 && cargo build $([ $DEBUG = 1 ] || echo --release) --features profiling && cp ./target/$([ $DEBUG = 1 ] && echo debug || echo release)/ayzim-opt ~/Desktop/emscripten/ cargo build --release --target x86_64-unknown-linux-musl - make sure to always assert that the last element was/wasn't present (or add a note that it's not appropriate) when inserting or deleting from sets and maps - explicitly call .iter/.iter_mut/.into_iter - make sure all traverse* closures explicitly give argument types - mast may not be needed if you use ** - review uses of .. - should only be used when matching a number of different ast types in order to ignore them - consider turning all matches on _ to explicit matches of ast variations - be wary about using &IString, they're needlessly inefficient - if not indenting inside a traverse*, leave a blank line at beginning and end of the closure - make sure to never use .X tuple indexing when doing .getBlah - convert all unwraps to expect and add details to panics - check for &* - the * isn't needed if rust knows the target type - consider mem::replace to be must_use - just use *x = y otherwise (maybe clippy should warn) - rewrite ayzim-macros to use macros 1.1? LATER - not sure how well tested emit and receivejson are - not being able to chain conditions onto the beginning or end of if let lines is rubbish, there's an issue fr it somewhere - ensure no semicolons except where necessary - consistently name the enum members of the ast enum - use vecs rather than astvecs where it doesn't increase the size of the astvalue enum - try and minimise astnode usage - should mostly be &(mut)? AstValue - think of some nice way to get rid of mast entirely - mem::swaps are interesting because they can either swap the boxes (pointers) or the actual AstValues. could this distinction harm locality - pattern matches should possibly unbox, so that future accesses only have to dereference once - is it faster to use functions rather than IStringSets? - type aliases for ordered and unordered maps rather than using hashmap and btreemap directly