Sorry, but I have to disagree. The && operator is designed to do a short-circuit boolean AND. This works well because the types on both sides are booleans and the result also is. Now if you put Option into the mix, you’ll have to answer what happens when someone puts an option to the left side of the &&? What if we have an option on both sides?
let o1 = Some(..);
let o2 = None;
let b1 = true;
let b2 = false;
b1 && b2; // evaluates b1, then b2, returns false: bool
b1 && o1; // evaluates b1, then o1, returns Some(..): Option
b2 && o1; // evaluates b2, returns None: Option
o1 && b2; // ?
o2 && b1; // ?
o1 && o2; // ???
(b1 && o2) && (o1 && b2); // !?
o1 && b1 && o2 && b2 && Some("This is no longer funny"); // don't you agree?
Either we’d make the right-hand side type the result type (which would at least be a clear-cut rule), which could still confuse the hell out of people, or we’d make having a left-hand-side Option illegal (by not implementing the logical operator for this case), which would probably still be a footgun.