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