[Rust] First thought: Iterator solution
Complexity

Time complexity:
O(n)


Space complexity:
O(1)

Code
# Complexity
- Time complexity:
$$O(n)$$

- Space complexity:
$$O(1)$$

# Code
```rust []
impl Solution {
    pub fn are_almost_equal(s1: String, s2: String) -> bool {
        let mut iter = s1.bytes().zip(s2.bytes()).filter(|(b1, b2)| b1 != b2);

        let Some(first_diff) = iter.next() else {
            return true; // no diff = strings are equal!
        };

        let Some(second_diff) = iter.next() else {
            return false; // unfortunately, if there's only one diff, we can't make them equal by swaping with any
        };

        if iter.next().is_some() {
            false // more? we can only swap once, sr
        } else {
            first_diff.0 == second_diff.1 && first_diff.1 == second_diff.0
        }
    }
}
```
['Iterator', 'Rust']