pub struct CloneOnCopyMutation {
pub target_fn: Option<SymbolId>,
pub aggressive: bool,
pub copy_vars: Vec<String>,
}Expand description
Remove unnecessary .clone() calls on Copy types
Since we don’t have full type information, this mutation is conservative and only removes .clone() in patterns where the type is clearly Copy:
- Literals (integers, floats, bools, chars)
- Known Copy types (primitives)
For more aggressive removal, use with Clippy integration which has full type information.
§Example
ⓘ
use ryo_mutations::idiom::CloneOnCopyMutation;
let mutation = CloneOnCopyMutation::new().aggressive();
// With aggressive mode, transforms: x.clone()
// Into: x
// (requires external type checking for safety)Fields§
§target_fn: Option<SymbolId>Target function SymbolId. If None, applies to all functions.
aggressive: boolAggressive mode: remove all .clone() calls (requires external type checking)
copy_vars: Vec<String>Known Copy type variable names (for targeted removal)
Implementations§
Source§impl CloneOnCopyMutation
impl CloneOnCopyMutation
pub fn new() -> Self
Sourcepub fn in_function(self, id: SymbolId) -> Self
pub fn in_function(self, id: SymbolId) -> Self
Only apply in a specific function
Sourcepub fn aggressive(self) -> Self
pub fn aggressive(self) -> Self
Enable aggressive mode (remove all .clone() calls)
Use with caution - this should be combined with Clippy’s type analysis or external validation.
Sourcepub fn with_copy_var(self, var: impl Into<String>) -> Self
pub fn with_copy_var(self, var: impl Into<String>) -> Self
Add a variable known to be Copy type
pub fn transform_fn(&self, func: &mut PureFn) -> usize
Trait Implementations§
Source§impl Clone for CloneOnCopyMutation
impl Clone for CloneOnCopyMutation
Source§fn clone(&self) -> CloneOnCopyMutation
fn clone(&self) -> CloneOnCopyMutation
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CloneOnCopyMutation
impl Debug for CloneOnCopyMutation
Source§impl Default for CloneOnCopyMutation
impl Default for CloneOnCopyMutation
Source§fn default() -> CloneOnCopyMutation
fn default() -> CloneOnCopyMutation
Returns the “default value” for a type. Read more
Source§impl Mutation for CloneOnCopyMutation
impl Mutation for CloneOnCopyMutation
Source§fn mutation_type(&self) -> &'static str
fn mutation_type(&self) -> &'static str
Get the mutation type name
Source§fn validate(&self, _file: &PureFile) -> ValidationResult
fn validate(&self, _file: &PureFile) -> ValidationResult
Validate the mutation before applying Read more
Source§fn can_proceed(&self, file: &PureFile, strategy: ValidationStrategy) -> bool
fn can_proceed(&self, file: &PureFile, strategy: ValidationStrategy) -> bool
Check if this mutation can proceed with the given strategy
Auto Trait Implementations§
impl Freeze for CloneOnCopyMutation
impl RefUnwindSafe for CloneOnCopyMutation
impl Send for CloneOnCopyMutation
impl Sync for CloneOnCopyMutation
impl Unpin for CloneOnCopyMutation
impl UnsafeUnpin for CloneOnCopyMutation
impl UnwindSafe for CloneOnCopyMutation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more