Skip to main content

Crate ryo_mutations

Crate ryo_mutations 

Source
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 integration
  • analyzer/ - rust-analyzer LSP integration
  • debugger/ - 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§

MutationBatch
A collection of mutations to apply
MutationResult
Result of applying a mutation
ValidationIssue
A validation issue found during pre-execution validation
ValidationResult
Validation result containing all issues

Enums§

ValidationCode
Validation issue code for categorization
ValidationLevel
Validation severity level (ordered by severity)
ValidationStrategy
Strategy for handling validation results

Traits§

Mutation
A mutation that can be applied to AST.

Functions§

clone_mutation
Clone a boxed mutation