I can straight-forwardly match a String in Rust:
let a = "hello".to_string();
match &a[..] {
    "hello" => {
        println!("Matches hello");
    }
    _ => panic!(),
}
If I have an option type, it fails:
match Some(a) {
    Some("hello") => {
        println!("Matches some hello");
    }
    _ => panic!(),
}
because the types don't match:
error[E0308]: mismatched types
 --> src/main.rs:5:14
  |
5 |         Some("hello") => {
  |              ^^^^^^^ expected struct `std::string::String`, found reference
  |
  = note: expected type `std::string::String`
             found type `&'static str`
I can't do the [..] trick because we have an Option. The best that
I have come up with so far is:
match Some(a) {
    Some(b) => match (&b[..]) {
        "hello" => {
            println!("Matches some, some hello");
        }
        _ => panic!(),
    },
    None => panic!(),
}
which works but is terrible for its verbosity.
In this case, my code is just an example. I do not control the creation of either the String or the Some(String) — so I can't change this type in reality as I could do in my example.
Any other options?