Pull to refresh

Comments 8

#[cfg(not(test))]
fn hello() -> &'static str {
    return "Hello world";
}

#[cfg(test)]
fn hello() -> &'static str {
    return "Hello test";
}

#[test]
fn test_hello() {
    assert_eq!(hello(), "Hello test");
}

Великолепно, написали тест который тестирует тестовую реализацию - очень полезно.

Да и в целом, способ из растбука гораздо лучше предложенного - закрываем за cfg(test) целый модуль в котором, при необходимости, пишем моки и тп.

Совершенно вредный совет. Как минимум советуют делать фичи не взаимоисключающими. Во вторых, менять реализацию через фичи это нарушение принципов solid.

Все это даже не в духе джавы, а скорее в духе си.

Это полезно если надо пишешь обощенный код, но под конкретную архитектуру можно использовать и что то побыстрее. Например SSE2

Не хотелось бы подкидывать дров в огонь, но я именно на C++ так и делаю))

Как вы советуете решать ту же проблему?

Через типажи и trait objectы, чтобы подменять реализации динамически. А в простых случаях можно и через замыкание.

fn hello() -> &'static str {
    return "Hello world";
}

->

fn hello() -> &'static str {
    "Hello world"
}
Sign up to leave a comment.