papyrus 0.17.2

A rust repl and script runner
Source file and crate contents.

Input is parsed as Rust code using the `syn` crate. `papyrus` does not differentiate the
myriad of classications for the input, rather it categorises them into [`Item`]s, [`Statement`]s,
and [`CrateType`]s.

`papyrus` will parse a string input into a [`Input`], and these aggregate into a [`SourceCode`]
structure, which flattens each input.

# Examples

Building some source code.
```rust
# extern crate papyrus;
use papyrus::code::*;

let mut src = SourceCode::default();
src.stmts.push(StmtGrp(vec![Statement {
    expr: String::from("let a = 1"),
        semi: true
    },
    Statement {
        expr: String::from("a"),
        semi: false
    }
]));
```

Crates have some more structure around them.
```rust
# extern crate papyrus;
use papyrus::code::*;

let input = "extern crate a_crate as acrate;";
let cr = CrateType::parse_str(input).unwrap();

assert_eq!(&cr.src_line, input);
assert_eq!(&cr.cargo_name, "a-crate");
```

[`CrateType`]: CrateType
[`Input`]: Input
[`Item`]: Item
[`SourceCode`]: SourceCode
[`Statement`]: Statement