ryo-source 0.1.0

High-speed Rust AST manipulation engine
Documentation
//! PureAST - Thread-safe, Span-free AST for parallel processing.
//!
//! # Design Philosophy
//!
//! `syn::File` contains `proc_macro2::Span` which prevents it from being
//! `Send`/`Sync`. PureAST strips all span information, creating a clean
//! data structure that can be safely shared across threads.
//!
//! ## Features
//!
//! - **Thread-safe**: `Send + Sync` - share across threads with `Arc`
//! - **Lightweight**: No span overhead, smaller memory footprint
//! - **Serializable**: Can be serialized for IPC or persistence
//! - **Bidirectional**: Convert to/from `syn::File`
//!
//! ## Usage
//!
//! ```ignore
//! use std::sync::Arc;
//! use ryo_source::pure::PureFile;
//!
//! let pure = PureFile::from_source("fn main() {}")?;
//! let shared = Arc::new(pure);
//!
//! // Now safe to share across threads!
//! let handle = std::thread::spawn({
//!     let shared = Arc::clone(&shared);
//!     move || shared.functions().len()
//! });
//! ```

mod analysis;
mod ast;
mod convert;
mod item;
pub mod macro_utils;
mod parallel;
mod rename;
mod to_syn;

pub use analysis::{PureDefRefs, PureSymbol, PureSymbolKind, PureSymbolTable};
pub use ast::*;
pub use convert::ToPure;
pub use item::ItemKind;
pub use parallel::PureParallel;
pub use rename::{PureRename, PureRenameResult};
pub use to_syn::{format_files_with_rustfmt, ToSyn, ToSynError};