23
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rustでローカルのクレートを使う

Posted at

Githubなどに上げていないローカルのクレートを使う方法。
簡単なんだけどちょっとハマったのでメモ。

ライブラリ側

まず自分のライブラリを作る

$ cargo new my_lib
mylib/src/lib.rs
pub fn hello() {
    println!("Hello my library");
}

// ここから下はcargo new したときに生成されるコード
#[cfg(test)]
mod tests {
    #[test]
    fn it_works() {
    }
}

ここで、#[cfg(test)]は条件付きコンパイル属性です。
この場合はcargo testしたときのみコンパイルされる?(ちがうかも)

なぜか#[cfg(test)]の直下に自分がエクスポートしたい関数を書いちゃってそんな関数ないよってコンパイルエラーでてハマった。
そりゃそうだ!!

使う側

$ cargo new my_app --bin

実行形式ファイルを作るときは--binオプションを忘れずに。

my_app/Cargo.toml
[package]
name = "my_app"
version = "0.1.0"
authors = ["Ayachi Gin <ayachigin@gmail.com>"]

[dependencies.my_lib]
path = "../my_lib"

さっき作ったライブラリのパスを依存関係に書く

my_app/src/main.rs
extern crate my_lib;

fn main() {
    println!("Hello, world!");
    my_lib::hello();
}

これで実行するだけ。
簡単ですね。

$ cargo run
cargo run
   Compiling my_lib v0.1.0 (ほにゃらら/projects/rust/my_lib)
   Compiling my_app v0.1.0 (ほにゃらら/projects/rust/my_app)
     Running `ほにゃらら\projects\rust\my_app\target\debug\my_app.exe`
Hello, world!
Hello my library
23
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?