Expand description
ryo-mutations: Code transformation primitives for Rust source code
This crate provides a unified interface for AST-level mutations with validation, serialization, and parallel execution support.
§Module Structure
basic/- Fundamental AST operations (add, remove, rename, visibility)refactor/- Structural transformations (extract, inline, split, merge)idiom/- Idiomatic Rust patterns (unwrap→?, loops→iterators, Default)clippy/- Clippy lint integrationanalyzer/- rust-analyzer LSP integrationdebugger/- Debug logging utilities
§Validation
Mutations can be validated before execution using Mutation::validate.
The validation result can be controlled by ValidationStrategy:
AllowAll- For FactionBoard/speculative execution (proceed regardless)BlockFatalOnly- For speculative execution (block only fatal errors)BlockConflicts- For sequential execution (block potential conflicts)Strict- For debugging (block all issues)
Re-exports§
pub use basic::AddConstMutation;pub use basic::AddDeriveMutation;pub use basic::AddEnumMutation;pub use basic::AddFieldMutation;pub use basic::AddFunctionMutation;pub use basic::AddImplMutation;pub use basic::AddItemMutation;pub use basic::AddMatchArmMutation;pub use basic::AddMethodMutation;pub use basic::AddPureItemsMutation;pub use basic::AddStructLiteralFieldMutation;pub use basic::AddStructMutation;pub use basic::AddTypeAliasMutation;pub use basic::AddUseMutation;pub use basic::AddVariantMutation;pub use basic::ChangeVisibilityMutation;pub use basic::CreateModMutation;pub use basic::EnumToTraitMutation;pub use basic::EnumToTraitStrategy;pub use basic::ExtractTraitMutation;pub use basic::FieldInfo;pub use basic::InlineTraitMutation;pub use basic::MatchHandling;pub use basic::MoveItemMutation;pub use basic::RemoveConstMutation;pub use basic::RemoveDeriveMutation;pub use basic::RemoveEnumMutation;pub use basic::RemoveFieldMutation;pub use basic::RemoveFunctionMutation;pub use basic::RemoveImplMutation;pub use basic::RemoveItemMutation;pub use basic::RemoveMatchArmMutation;pub use basic::RemoveMethodMutation;pub use basic::RemoveModMutation;pub use basic::RemoveStructLiteralFieldMutation;pub use basic::RemoveStructMutation;pub use basic::RemoveTraitMutation;pub use basic::RemoveTypeAliasMutation;pub use basic::RemoveUseMutation;pub use basic::RemoveVariantMutation;pub use basic::RenameMutation;pub use basic::ReplaceMatchArmMutation;pub use basic::VariantInfo;pub use idiom::AssignOpMutation;pub use idiom::BoolSimplifyMutation;pub use idiom::CloneOnCopyMutation;pub use idiom::CollapsibleIfMutation;pub use idiom::ComparisonToMethodMutation;pub use idiom::DefaultMutation;pub use idiom::DeriveDefaultMutation;pub use idiom::FilterNextMutation;pub use idiom::FindDuplicateExpressions;pub use idiom::IntroduceVariableMutation;pub use idiom::LockScopeMutation;pub use idiom::LoopPattern;pub use idiom::LoopToIteratorMutation;pub use idiom::ManualMapMutation;pub use idiom::MapUnwrapOrMutation;pub use idiom::MatchToIfLetMutation;pub use idiom::NoOpArmToTodoMutation;pub use idiom::OrganizeImportsMutation;pub use idiom::RedundantClosureMutation;pub use idiom::UnwrapToQuestionMutation;pub use idiom::UseAtomicMutation;pub use idiom::UseRwLockMutation;pub use idiom::detect::create_default_registry;pub use idiom::detect::Detect;pub use idiom::detect::DetectCategory;pub use idiom::detect::DetectLocation;pub use idiom::detect::DetectOperation;pub use idiom::detect::DetectOpportunity;pub use idiom::detect::DetectRegistry;pub use basic::stmt::InsertPosition;pub use basic::stmt::InsertStatementMutation;pub use basic::stmt::RemoveStatementMutation;pub use basic::stmt::ReplaceExprAtMutation;pub use basic::stmt::ReplaceExprMutation;pub use basic::stmt::ReplaceStatementMutation;pub use basic::stmt::WrapExprMutation;pub use debugger::DbgWrapMutation;pub use debugger::DebugMarker;pub use debugger::DebugSession;pub use debugger::InsertInspectMutation;pub use debugger::RemovalTarget;pub use debugger::RemoveDebugLogsMutation;pub use debugger::MARKER_PREFIX;pub use serializable::SerializableMutation;pub use serializable::ToSerializable;
Modules§
- analyzer
- rust-analyzer Integration: LSP-based code intelligence for mutations
- basic
- Basic AST mutations: add, remove, rename, change visibility
- clippy
- Clippy Integration: Bridge between Clippy diagnostics and ryo-mutations
- debugger
- Debug log insertion and removal for method chains.
- idiom
- Idiomatic Rust transformations
- serializable
- Serializable mutation representation for storage and replay.
Structs§
- Mutation
Batch - A collection of mutations to apply
- Mutation
Result - Result of applying a mutation
- Validation
Issue - A validation issue found during pre-execution validation
- Validation
Result - Validation result containing all issues
Enums§
- Validation
Code - Validation issue code for categorization
- Validation
Level - Validation severity level (ordered by severity)
- Validation
Strategy - Strategy for handling validation results
Traits§
- Mutation
- A mutation that can be applied to AST.
Functions§
- clone_
mutation - Clone a boxed mutation