Strings e Iteradores

Neste exercício, você irá implementar um componente de roteamento de um servidor web. O servidor está configurado com um número de prefixos de caminhos que são comparados com os caminhos requisitados. Os prefixos de caminho podem conter um caractere curinga que corresponde a um segmento completo. Veja os testes unitários abaixo.

Copie o seguinte código para https://play.rust-lang.org/ e faça os testes passarem. Tente evitar alocar um Vec para seus resultados intermediários:

#![allow(unused)]
fn main() {
// TODO: remova isto quando você estiver terminado com sua implementação.
#![allow(unused_variables, dead_code)]

pub fn corresponde_prefixo(prefixo: &str, caminho_requisitado: &str) -> bool {
    unimplemented!()
}

#[test]
fn teste_corresponde_sem_curinga() {
    assert!(corresponde_prefixo("/v1/editores", "/v1/editores"));
    assert!(corresponde_prefixo("/v1/editores", "/v1/editores/abc-123"));
    assert!(corresponde_prefixo("/v1/editores", "/v1/editores/abc/livros"));

    assert!(!corresponde_prefixo("/v1/editores", "/v1"));
    assert!(!corresponde_prefixo("/v1/editores", "/v1/editoresLivros"));
    assert!(!corresponde_prefixo("/v1/editores", "/v1/pai/editores"));
}

#[test]
fn teste_corresponde_com_curinga() {
    assert!(corresponde_prefixo(
        "/v1/editores/*/livros",
        "/v1/editores/foo/livros"
    ));
    assert!(corresponde_prefixo(
        "/v1/editores/*/livros",
        "/v1/editores/bar/livros"
    ));
    assert!(corresponde_prefixo(
        "/v1/editores/*/livros",
        "/v1/editores/foo/livros/livro1"
    ));

    assert!(!corresponde_prefixo("/v1/editores/*/livros", "/v1/editores"));
    assert!(!corresponde_prefixo(
        "/v1/editores/*/livros",
        "/v1/editores/foo/livrosPorAutor"
    ));
}
}