Ну и добавлю без объяснений более короткое решение, с использованием продвинутых битовых хаков, которое стоит попробовать осмыслить самостоятельно.
impl Solution {
pub fn minimize_xor(num1: i32, num2: i32) -> i32 {
let n1 = num1.count_ones();
let n2 = num2.count_ones();
let mut result = num1;
for _ in n1..n2 {
result |= result + 1
}
for _ in n2..n1 {
result &= result -1
}
result
}
}
перейти