Rust

Rust Mutations

StatementBlock

Before

if x > 0 { }

After

if x > 0 {}

Condition

Before

if x > 0 { }

After

if true { }
if false { }

BinaryOp - Add

Before

let x = a + b;

After

let x = a - b;
let x = a * b;

BinaryOp - And

Before

let x = a && b;

After

let x = a || b;

BinaryOp - BitAnd

Before

let x = a & b;

After

let x = a | b;
let x = a ^ b;

BinaryOp - BitOr

Before

let x = a | b;

After

let x = a & b;
let x = a ^ b;

BinaryOp - BitXor

Before

let x = a ^ b;

After

let x = a & b;
let x = a | b;

BinaryOp - Div

Before

let x = a / b;

After

let x = a * b;
let x = a - b;

BinaryOp - Eq

Before

let x = a == b;

After

let x = a != b;

BinaryOp - Gt

Before

if x > 0 { }

After

if x <= 0 { }
if x >= 0 { }

BinaryOp - Gte

Before

let x = a >= b;

After

let x = a < b;
let x = a > b;

BinaryOp - Lt

Before

let x = a < b;

After

let x = a >= b;
let x = a <= b;

BinaryOp - Lte

Before

let x = a <= b;

After

let x = a > b;
let x = a < b;

BinaryOp - Mul

Before

let x = a * b;

After

let x = a / b;
let x = a + b;

BinaryOp - Or

Before

let x = a || b;

After

let x = a && b;

BinaryOp - Rem

Before

let x = a % b;

After

let x = a * b;
let x = a / b;

BinaryOp - Shl

Before

let x = a << b;

After

let x = a >> b;

BinaryOp - Shr

Before

let x = a >> b;

After

let x = a << b;

BinaryOp - Ne

Before

let x = a != b;

After

let x = a == b;

BinaryOp - Sub

Before

let x = a - b;

After

let x = a + b;
let x = a / b;

Assign - AddAssign

Before

x += 1;

After

x -= 1;
x = 1;

Assign - BitAndAssign

Before

x &= 1;

After

x |= 1;
x = 1;

Assign - BitOrAssign

Before

x |= 1;

After

x &= 1;
x = 1;

Assign - BitXorAssign

Before

x ^= 1;

After

x &= 1;
x = 1;

Assign - DivAssign

Before

x /= 1;

After

x *= 1;
x = 1;

Assign - MulAssign

Before

x *= 1;

After

x /= 1;
x = 1;

Assign - NormalAssign

Before

x = 1;

After

x += 1;
x -= 1;

Assign - RemAssign

Before

x %= 1;

After

x *= 1;
x = 1;

Assign - ShlAssign

Before

x <<= 1;

After

x >>= 1;
x = 1;

Assign - ShrAssign

Before

x >>= 1;

After

x <<= 1;
x = 1;

Assign - SubAssign

Before

x -= 1;

After

x += 1;
x = 1;

ArrayDecl - Inline

Before

let x = [1, 2, 3];

After

let x = [];

Literal - BoolTrue

Before

let x = true;

After

let x = false;

Literal - BoolFalse

Before

let x = false;

After

let x = true;

Literal - String

Before

let x = "hello";

After

let x = "";

Literal - EmptyString

Before

let x = "";

After

let x = "bough";

Literal - Number

Before

x = 1;

After

x = 0;
x = 1;
x = -1;

TupleDecl

Before

let x = (1, 2, 3);

After

let x = ();

UnaryNot

Before

let x = !y;

After

let x = y;

SwitchCase

Before

match x {
    n if n > 5 => n,
    _ => 2,
}

After

match x {
    
    _ => 2,
}
match x {
    n if n > 5 => n,
    
}

Range - Exclusive

Before

let x = ..5;

After

let x = ..=5;

Range - Inclusive

Before

let x = ..=5;

After

let x = ..5;

Range - From

Before

let x = 1..;

After

let x = ..;

MatchPattern

Before

match x {
    1 => println!("one"),
    _ => println!("other"),
}

After

match x {
    _ => println!("one"),
    _ => println!("other"),
}