У меня есть что-то вроде этого:
#[macro_use]
extern crate quick_error;
#[cfg(target_os = "linux")]
#[macro_use]
extern crate nix;
quick_error! {
#[derive(Debug)]
pub enum Error {
DeviceNotFound{
description("Could not find a ledger device")
}
Ioctl ( err: nix::Error ) {
from()
description("ioctl error")
display("ioctl error: {}", err)
cause(err)
}
}
}
У меня проблема в том, что nix
доступна только в Linux.
Как я могу сделать Ioctl
условным для Linux? Или это плохая идея?
Интересно, каков рекомендуемый подход в Rust.
Альтернатива: могу ли я использовать типы ящиков nix даже в Windows, если я не использую какую-либо функцию / метод? В этом случае мне не нужно делать это условным.
Обновление:
Кажется, что линия from()
связана с проблемой.
@ Stargateur определенно работает для большинства случаев, но не для моего конкретного вопроса. Я добавляю сюда Пример кода .
#[macro_use]
extern crate quick_error;
quick_error! {
#[derive(Debug)]
pub enum Error {
DeviceNotFound{
description("Could not find a ledger device")
}
#[cfg(target_os = "windows")]
Ioctl ( err: nix::Error ) {
from()
description("ioctl error")
display("ioctl error: {}", err)
cause(err)
}
}
}
fn main() {
let _ = Error::DeviceNotFound;
}