Expand description
A complete file of Rust source code.
This type is available if Syn is built with the "full"
feature.
Example
Parse a Rust source file into a syn::File
and print out a debug
representation of the syntax tree.
use std::env;
use std::fs::File;
use std::io::Read;
use std::process;
fn main() {
let mut args = env::args();
let _ = args.next(); // executable name
let filename = match (args.next(), args.next()) {
(Some(filename), None) => filename,
_ => {
eprintln!("Usage: dump-syntax path/to/filename.rs");
process::exit(1);
}
};
let mut file = File::open(&filename).expect("Unable to open file");
let mut src = String::new();
file.read_to_string(&mut src).expect("Unable to read file");
let syntax = syn::parse_file(&src).expect("Unable to parse file");
println!("{:#?}", syntax);
}
Running with its own source code as input, this program prints output that begins with:
File {
shebang: None,
attrs: [],
items: [
ExternCrate(
ItemExternCrate {
attrs: [],
vis: Inherited,
extern_token: Extern,
crate_token: Crate,
ident: Ident {
term: Term(
"syn"
),
span: Span
},
rename: None,
semi_token: Semi
}
),
...
Fields
shebang: Option<String>
attrs: Vec<Attribute>
items: Vec<Item>
Trait Implementations
sourceimpl ToTokens for File
impl ToTokens for File
sourcefn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
sourcefn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
impl Eq for File
impl StructuralEq for File
impl StructuralPartialEq for File
Auto Trait Implementations
impl RefUnwindSafe for File
impl !Send for File
impl !Sync for File
impl Unpin for File
impl UnwindSafe for File
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Spanned for Twhere
T: ToTokens,
impl<T> Spanned for Twhere
T: ToTokens,
sourcefn span(&self) -> Span
fn span(&self) -> Span
Returns a
Span
covering the complete contents of this syntax tree
node, or Span::call_site()
if this node is empty. Read more