Rustでカッコ対応判定

{}, [], ()の3種類について対応の判定をする。あんま分かりやすいコードじゃないですが…

fn valid_braces(s: &str) -> bool {
    let mut v = Vec::new();
    for c in s.chars() {
        if c == '{' || c == '[' || c == '(' {
            v.push(c);
        }
        else
        {
            if v.is_empty() {return false}
            let x = v.pop().unwrap();
            if (x == '(' && c == ')') || (x == '[' && c == ']') || (x == '{' && c == '}') {
                continue;
            }
            return false;
        }
    }
    if !v.is_empty() { return false }
    return true;
}