Función recursiva si los tipos de declaración no coinciden en Rust

fn recursive_binary_search<T: Ord>(list: &mut [T], target: T) -> bool {
    if list.len() < 1 {
        return false;
    }
    let guess = list.len() / 2;
    if target == list[guess] {
        return true;
    } else if list[guess] > target {
        return recursive_binary_search(&mut list[0..guess], target);
    } else if list[guess] < target {
        return recursive_binary_search(&mut list[guess..list.len()], target);
    }
}

el compilador arroja un error enif target == list[guess] diciendo

src/main.rs:33:5: 39:6 error: mismatched types [E0308]
src/main.rs:33     if target == list[guess] {
                   ^
src/main.rs:33:5: 39:6 help: run `rustc --explain E0308` to see a detailed explanation
src/main.rs:33:5: 39:6 note: expected type `bool`
src/main.rs:33:5: 39:6 note:    found type `()`
error: aborting due to previous error

No puedo entender cómo reescribir esta función para satisfacer el verificador de tipo. Supongo que es porque tengo el tipo de retorno establecido en bool y hay una llamada de función de retorno.

Respuestas a la pregunta(2)

Su respuesta a la pregunta