All of the .rs files in this directory are intented to be stand alone test files that can be complied (or not) by rustc. The test files should rely on the extern crates luther and luther_derive, but not any other crates. There is no expectation that the output of running rustc on one of these .rs files will be run. The test is running rustc itself. The invocation of rustc will be something like: rusc -L dependency=... -extern luther=... --extern luther_derive=... file.rs By convention compilation of files named succ*.rs are expected to succeed and compliation of fles name fail*.rs are expected to fail. The script "runtests" will (as it name suggests) run the tests. It is designed to be run in root of the project (i.e. the root of the 'luther' crate, not the 'luther-derive' crate.