#let-else and unsafe

9 messages · Page 1 of 1 (latest)

trail aurora
#

I am trying to call an unsafe function with the let-else pattern but with unsafe it doesn't seem to work:

fn func() -> Option<i32> {}
let Some(test) = unsafe { func() } else {
    my_logger("error");
    return;
};
right curly brace `}` before `else` in a `let...else` statement not allowed

This seems to work but test is not accessible after the scope:

fn func() -> Option<i32> {}
unsafe {
    let Some(test) = func() else {
        my_logger("error");
        return;
    };
}
frozen fulcrum
#

did you try (unsafe { func() })

trail aurora
#

🤦‍♂️

#

Thanks

frozen fulcrum
#

it is not pretty to be fair

#

other solution would be

let maybe_test = unsafe { func() };
let Some(test) = maybe_test else {
    my_logger("error");
    return;
};
#

neither are ideal sadly

#

my guess is that it somehow can conflict with if let .. { .. } else

#

that's why it doesn't allow } before else in let else