LINUX.ORG.RU

rust cargo не реагирует на features

 ,


0

4

Продолжаю изучать Rust. есть такой тривиальный юнит тест

//#[cfg(feature = "fileapi")]
pub fn read_root() {
        if cfg!(cargo_feature = "fileapi") {
            println!("_____")
        }
}
[package]
name = "aexplorer"
version = "0.1.0"
authors = ["andrew <andrew@ya.com>"]

[features]
fileapi = []

[dependencies]
winapi ="0.3.4"

Так вот по чему то условие не срабатывает несмотря на то что данная feature включена в cargo.toml

Ответ на: комментарий от red75prim

Вот попробовал и как параметр для cargo и в cargo.toml прописать все равно не срабатывает.

Loafter ()
Ответ на: комментарий от Loafter

поправка

по чему то это не срабатывает на юнит тесты, а на обычную сборку срабатывает

Loafter ()
Ответ на: поправка от Loafter

Где-то что-то не так.

fn main() {}

#[cfg(test)]
mod tests {
    #[cfg(feature = "fileapi")]
    #[test]
    fn fileapi_test() {
        println!("Success");
    }
}

Результаты:

D:\git\test4>cargo test --features=fileapi
   Compiling test4 v0.1.0 (file:///D:/git/test4)
    Finished dev [unoptimized + debuginfo] target(s) in 0.86 secs
     Running target\debug\deps\test4-f1b72abd42953d01.exe

running 1 test
test tests::fileapi_test ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out


D:\git\test4>cargo test
   Compiling test4 v0.1.0 (file:///D:/git/test4)
    Finished dev [unoptimized + debuginfo] target(s) in 0.82 secs
     Running target\debug\deps\test4-e777e5c1c5ebc834.exe

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
red75prim ★★ ()
Ответ на: комментарий от red75prim

Спасибо За ответ.

Не много с другой стороны. Что я изначально хотел добится: я использую winapi crate пытаюсь воспользоваться модулем fileapi

extern crate winapi;
....
let d: u32 =winapi::um::fileapi::GetLogicalDrives();
...
я посмотрел в модуле um там есть такие строки:
#[cfg(feature = "fileapi")] pub mod fileapi;
правильно ли я понимаю что для того что бы воспользоваться fileapi нужно объявить соответствующую feature fileapi?

Loafter ()
Ответ на: Спасибо За ответ. от Loafter

Нет, неправильно. Нужно указать, что нам нужна фича fileapi из крейта winapi.

[dependencies]
winapi = "0.3.4"

[target.'cfg(test)'.dependencies]
winapi = { version = "0.3.4", features = ["fileapi"] }

Говорим, что для тестов нам нужно fileapi.

red75prim ★★ ()

cargo clean делал после изменений в Cargo.toml?

Virtuos86 ★★★★★ ()
Ответ на: комментарий от red75prim

Всем спасибо за подсказки вот так сработало!

[dependencies]
winapi = { version = "0.3.4", features = ["fileapi"] }
Loafter ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.