rustc_ast/lib.rs
1//! The Rust Abstract Syntax Tree (AST).
2//!
3//! # Note
4//!
5//! This API is completely unstable and subject to change.
6
7// tidy-alphabetical-start
8#![allow(internal_features)]
9#![doc(
10 html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/",
11 test(attr(deny(warnings)))
12)]
13#![doc(rust_logo)]
14#![feature(array_windows)]
15#![feature(associated_type_defaults)]
16#![feature(box_patterns)]
17#![feature(if_let_guard)]
18#![feature(macro_metavar_expr)]
19#![feature(negative_impls)]
20#![feature(never_type)]
21#![feature(rustdoc_internals)]
22#![feature(stmt_expr_attributes)]
23#![recursion_limit = "256"]
24// tidy-alphabetical-end
25
26pub mod util {
27 pub mod case;
28 pub mod classify;
29 pub mod comments;
30 pub mod literal;
31 pub mod parser;
32 pub mod unicode;
33}
34
35pub mod ast;
36pub mod ast_traits;
37pub mod attr;
38pub mod entry;
39pub mod expand;
40pub mod format;
41pub mod mut_visit;
42pub mod node_id;
43pub mod ptr;
44pub mod token;
45pub mod tokenstream;
46pub mod visit;
47
48pub use self::ast::*;
49pub use self::ast_traits::{AstNodeWrapper, HasAttrs, HasNodeId, HasTokens};
50
51/// Requirements for a `StableHashingContext` to be used in this crate.
52/// This is a hack to allow using the `HashStable_Generic` derive macro
53/// instead of implementing everything in `rustc_middle`.
54pub trait HashStableContext: rustc_span::HashStableContext {}