Expand description
§ryo-analysis: Code Graph and Discovery Engine
This crate provides code exploration, relationship analysis, and pattern-based symbol discovery for the RYO project.
§Key Design: AST-first approach
Symbols are identified by their AST hierarchy (SymbolPath), and physical files
are derived as a View layer. This enables file-independent symbol identification.
§Core Concepts
- SymbolPath: External representation for persistence and display. Unique across
the entire Rust ecosystem (e.g.,
tokio::sync::Mutex::lock). - SymbolId: Internal representation for fast processing. O(1) access via SlotMap with generation counter for dangling detection.
- SymbolRegistry: Central registry managing Symbol lifecycle and metadata.
- CodeGraphV2: Symbol relationship graph for fast traversal.
- WorkspaceFilePath: Self-contained file path (from ryo-symbol).
§Usage
ⓘ
use ryo_analysis::{SymbolPath, SymbolRegistry, SymbolKind};
// Create a SymbolPath
let path = SymbolPath::builder("tokio")
.push("sync")
.push("Mutex")
.build()?;
// Register in the registry
let mut registry = SymbolRegistry::new();
let id = registry.register(path, SymbolKind::Struct)?;
// Fast lookup
let resolved = registry.resolve(id);Re-exports§
pub use symbol::FileId;pub use symbol::FileRegistry;pub use symbol::InvalidFileId;pub use symbol::RegistryUpdate;pub use symbol::RegistryUpdateBatch;pub use pattern::CaseOptions;pub use pattern::Pattern;pub use query::AccessKind;pub use query::ActiveBorrowV2;pub use query::BorrowAnalysis;pub use query::BorrowConflict;pub use query::BorrowKind;pub use query::BorrowStateV2;pub use query::BorrowTrackerV2;pub use query::ChainDirection;pub use query::ChainNode;pub use query::ChainResult;pub use query::CodeEdgeV2;pub use query::CodeGraphV2;pub use query::CommentDirective;pub use query::ConstraintData;pub use query::ConstraintKind;pub use query::CriticalSectionV2;pub use query::DataFlowBuilderWorkspace;pub use query::DataFlowGraphV2;pub use query::DataFlowStats;pub use query::DefinitionData;pub use query::DeriveIndex;pub use query::DeriveIndexStats;pub use query::EdgeData;pub use query::EdgeId;pub use query::FieldAccessV2;pub use query::FlowChain;pub use query::FlowData;pub use query::FlowEdge;pub use query::FlowEdgeData;pub use query::FlowId;pub use query::FlowKind;pub use query::FlowStep;pub use query::GenericArgData;pub use query::GraphBuilderV2;pub use query::GroupData;pub use query::IntentData;pub use query::IntentKind;pub use query::LockAcquisitionV2;pub use query::LockGranularityAnalyzerV2;pub use query::LockStatsV2;pub use query::LockSuggestion;pub use query::LockTrackerV2;pub use query::LockType;pub use query::LookupTable;pub use query::MatchExprDataV2;pub use query::MatchExprId;pub use query::MoveError;pub use query::NodeKind;pub use query::QueryBuilder;pub use query::RefKind;pub use query::ReferenceIntegrityChecker;pub use query::ReferenceIntegrityIssue;pub use query::ReferenceIntegrityResult;pub use query::SpecAliasData;pub use query::SpecAliasInfo;pub use query::SpecFlowBuilderV2;pub use query::SpecFlowGraphV2;pub use query::SpecLookupTable;pub use query::SpecNodeId;pub use query::SpecNodeKind;pub use query::SpecSource;pub use query::StdImplCache;pub use query::TraitBoundData;pub use query::TypeAliasEntry;pub use query::TypeAliasRegistry;pub use query::TypeAliasRegistryBuilder;pub use query::TypeDefKind;pub use query::TypeFlowBuilderV2;pub use query::TypeFlowGraphV2;pub use query::TypeImpactChecker;pub use query::TypeImpactIssue;pub use query::TypeImpactResult;pub use query::TypeImpactV2;pub use query::TypeNodeId;pub use query::UnusedSymbol;pub use query::UnusedSymbolChecker;pub use query::UnusedSymbolResult;pub use query::UsageContext;pub use query::UsageData;pub use query::VarData;pub use query::VarId;pub use query::VarKind;pub use query::VarNode;pub use query::VarSymbolMapping;pub use discovery::DiscoveredSymbol;pub use discovery::DiscoveryEngine;pub use discovery::DiscoveryQuery;pub use discovery::DiscoveryResult;pub use discovery::RelationGraph;pub use discovery::RelationKind;pub use discovery::SortOrder;pub use discovery::TypeFilter;pub use context::AnalysisConfig;pub use context::AnalysisContext;pub use context::ContextError;pub use context::ExecutionContext;pub use context::ImHashMap;pub use detail_store::DetailStore;pub use detail_store::EnumDetail;pub use detail_store::FieldInfo;pub use detail_store::FunctionDetail;pub use detail_store::GenericInfo;pub use detail_store::ImplDetail;pub use detail_store::ParamInfo;pub use detail_store::StructDetail;pub use detail_store::StructKind;pub use detail_store::TraitDetail;pub use detail_store::VariantInfo;pub use summary::SummaryOptions;pub use summary::ToSummary;pub use check::cascade_add_derive;pub use check::CascadeMutation;pub use check::CascadeResult;pub use check::CascadeStatus;pub use check::CascadeStrategy;pub use check::CheckError;pub use check::CheckResult;pub use check::CheckWarning;pub use check::GraphChecker;pub use check::LightCheck;pub use cascade::CascadeAnalyzer;pub use cascade::CascadeSpec;pub use cascade::CascadeStrategy as NewCascadeStrategy;pub use cascade::ImpactLevel;pub use cascade::ImpactSet;pub use cascade::Visibility as CascadeVisibility;pub use literal::LiteralCollector;pub use literal::LiteralInfo;pub use literal::LiteralKind;pub use ast::ASTRegistry;pub use uuid_persistence::NoOpUuidPersistence;pub use uuid_persistence::UuidPersistence;pub use uuid_persistence::UuidPersistenceError;
Modules§
- ast
- AST Registry module
- cascade
- Cascade engine for propagating mutations through dependent code.
- check
- Lightweight graph-based compilation safety checks.
- context
- AnalysisContext - Unified initialization for code analysis structures.
- detail_
store - DetailStore - Cached symbol details for O(1) access.
- discovery
- Discovery module - Pattern-based symbol discovery.
- import_
map_ builder - ImportMap builder from PureUseTree
- literal
- Literal search module for code analysis.
- pattern
- Pattern - Pattern matching expressions for symbol discovery.
- query
- Query module - Code graph and query infrastructure.
- summary
- AI-readable output traits for graph structures
- symbol
- Symbol identification system for Rust ecosystem-wide unique identifiers.
- uuid_
persistence - UUID persistence trait for symbol identity storage.
Macros§
- define_
index - Macro to define a newtype index.
Structs§
- Crate
Name - Crate name from Cargo.toml
- File
Span - Position information within a file
- Invalid
Symbol Id - Invalid SymbolId error
- ReExport
Info - Re-export information
- Segment
- Path segment
- Symbol
Id - High-performance internal symbol ID
- Symbol
Path - Rust ecosystem-wide unique symbol path
- Symbol
Path Builder - Builder for SymbolPath
- Symbol
Ref - Unified symbol reference with ID and Path
- Symbol
Registry - Central registry for symbol management
- Uuid
- A Universally Unique Identifier (UUID).
- Workspace
File Path - Normalized relative path from workspace root (self-contained)
Enums§
- Parse
Error - SymbolPath parse error
- Registration
Error - Symbol registration error
- Rename
Error - Symbol rename error
- Symbol
Kind - Symbol type classification
- Visibility
- Visibility of a symbol