💻
Rustでnixクレートのptyを使おうとした時にコンパイルエラーになった
Rustのnixクレートのpty系の機能を使おうとしたらコンパイルエラーになったので、備忘録として残します
同時にforkでもおそらく似た理由でハマったので、ptyについて書いた後に書きます
1.Rustのnixクレートのptyを使おうとしたらコンパイルエラーになった
1.1.前提
使用ソフトバージョン
動作環境 | バージョン |
---|---|
Rust | 1.82.0 |
nix | 0.29.0 |
macOS sequoia | 15.3.1 |
プロジェクト構成
.
├── Cargo.lock
├── Cargo.toml
├── README.md
└── src
└── main.rs
1.2.ハマった時
ハマった時のファイルへの記述
main.rsのクレート呼び出し
use nix::pty::{openpty, OpenptyResult};
cargo.tomlのdependencies
[dependencies]
nix = "0.29.0"
実行結果
エラーになる
error[E0432]: unresolved import `nix::pty`
--> src/main.rs:1:10
|
1 | use nix::pty::{openpty, OpenptyResult};
| ^^^ could not find `pty` in `nix`
1.3.解決策
修正部分
cargo.tomlのdependencies
[dependencies]
nix = {version = "0.29.0", features = ["term"]}
これでコンパイルが通るようになる
2.参考:forkの場合
2.1.ハマった時
main.rsのクレート呼び出し
use nix::pty::{openpty, OpenptyResult};
use nix::unistd::{fork, ForkResult};
cargo.tomlのdependencies
[dependencies]
nix = "0.29.0"
2.2.解決策
修正部分
cargo.tomlのdependencies
[dependencies]
nix = {version = "0.29.0", features = ["term","process"]}
これでforkもコンパイルが通るようになる
3.原因考察(筆者の完全な備忘録)
クレートの構成によって、機能によってはcargo.tomlでの有効化が必要っぽい
クレートの呼び出しのこういう仕様はThe Rust Programming languageに書いてある内容な気がする
ちゃんと読まないとダメですね
注意
コンパイルエラーの解決に時間がかかり使えるかどうかまではみれていない
Discussion