Skip to main content

Crate ryo_analysis

Crate ryo_analysis 

Source
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§

CrateName
Crate name from Cargo.toml
FileSpan
Position information within a file
InvalidSymbolId
Invalid SymbolId error
ReExportInfo
Re-export information
Segment
Path segment
SymbolId
High-performance internal symbol ID
SymbolPath
Rust ecosystem-wide unique symbol path
SymbolPathBuilder
Builder for SymbolPath
SymbolRef
Unified symbol reference with ID and Path
SymbolRegistry
Central registry for symbol management
Uuid
A Universally Unique Identifier (UUID).
WorkspaceFilePath
Normalized relative path from workspace root (self-contained)

Enums§

ParseError
SymbolPath parse error
RegistrationError
Symbol registration error
RenameError
Symbol rename error
SymbolKind
Symbol type classification
Visibility
Visibility of a symbol