I believe that small isolated sugars like in will make Rust more pleasant to learn, read and write, at the cost of slightly higher peak of the learning slope. Yes, indeed, such proposals must be carefully scrutinized regarding potential surprising interactions with other features and possible pitfalls, but I don’t see any such problems with this particular proposal. And ergonomic improvements should be carefully weighted against additional mental load, which for in is amazingly small.
Your arguments can be applied to a various “quality of life” features which Rust already have (deref coercions, ?, impl Trait in argument position, type aliases, match ergonomics, etc., and soon NLL, async notation), without which writing and reading in Rust would’ve been a much more tiresome endeavour.
I don’t understand your complexity argument, there is absolutely no difference between using in or contains, the former is just a trivial sugar for the former. Yes, one can argue, that in could encourage potentially inefficient code, e.g. num in [10, 20, 30, 40] vs. num == 10 || num == 20 || num == 30 || num == 40, but I think optimizer should be fairly good with such cases.