我做了一个图书馆:
cargo new my_lib
Run Code Online (Sandbox Code Playgroud)
我想在另一个程序中使用该库:
cargo new my_program --bin
Run Code Online (Sandbox Code Playgroud)
extern crate my_lib;
fn main {
println!("Hello, World!");
}
Run Code Online (Sandbox Code Playgroud)
我需要做些什么才能让它发挥作用?
它们不在同一个项目文件夹中.
.
??? my_lib
??? my_program
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的.
我认为我可以按照货物指南覆盖路径,但它说明了
您无法使用此功能告诉Cargo如何查找本地未发布的板条箱.
这是使用最新稳定版本的Rust(1.3).
我正在尝试使用Cargo在我的系统(Arch Linux)上安装Rust crate.我可以搜索板条箱并找到我需要的东西,例如:
$ cargo search curl | head -n3
Updating registry `https://github.com/rust-lang/crates.io-index`
curl (0.3.0) Rust bindings to libcurl for making HTTP requests
curl-sys (0.2.0) Native bindings to the libcurl library
Run Code Online (Sandbox Code Playgroud)
当我尝试安装它时,我收到以下错误:
$ cargo install curl
Updating registry `https://github.com/rust-lang/crates.io-index`
error: specified package has no binaries
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我是否必须先从源代码构建它?如果Cargo没有安装它,它有什么意义?
$ uname -a
Linux 4.6.1-2-ARCH #1 SMP PREEMPT Thu Jun 2 15:46:17 CEST 2016 x86_64 GNU/Linux
$ rustc --version
rustc 1.9.0
$ cargo --version
cargo 0.10.0 (10ddd7d 2016-04-08)
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Rust中创建一个模块,然后从另一个文件中使用它.这是我的文件结构:
matthias@X1:~/projects/bitter-oyster$ tree
.
??? Cargo.lock
??? Cargo.toml
??? Readme.md
??? src
? ??? liblib.rlib
? ??? lib.rs
? ??? main.rs
? ??? main.rs~
? ??? plot
? ??? line.rs
? ??? mod.rs
??? target
??? debug
??? bitter_oyster.d
??? build
??? deps
??? examples
??? libbitter_oyster.rlib
??? native
8 directories, 11 files
Run Code Online (Sandbox Code Playgroud)
这是Cargo.toml:
[package]
name = "bitter-oyster"
version = "0.1.0"
authors = ["matthias"]
[dependencies]
Run Code Online (Sandbox Code Playgroud)
这是主要的:
extern crate plot;
fn main() {
println!("----");
plot::line::test();
}
Run Code Online (Sandbox Code Playgroud)
这是lib.rs:
mod plot;
Run Code Online (Sandbox Code Playgroud)
这是情节/模型
mod …Run Code Online (Sandbox Code Playgroud) 当我运行时cargo build,各种库存储在文件夹中/usr/local/lib/rustlib/.
清除这些库的正确方法是什么?我可以rm手动这些文件,但这是正确的做法吗?我注意到这/usr/local/lib/rustlib/manifest是一个包含所有库的填充文件路径列表的文件,因此如果我手动删除这些文件可能会破坏某些内容.
对于这个问题可能没有一个好的答案,但我有代码,我想在两个不同的Rust项目之间共享而不将crate发布到crates.io.
代码是专有的,我不想把它放到野外.
我读过https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
如果我理解正确,当我将 Cargo.lock 提交到我的 crate(它既是一个库又是一个可执行文件)的存储库中,并且将它发布到 crates.io 时,下游 crates 将忽略它并构建它自己的 snap,对吧?
我正在努力从我的生锈库中制作宏以供其他生锈项目使用.
这是我现在如何尝试这项工作的一个例子.
lib.rs:
#![crate_name = "dsp"]
#![feature(macro_rules, phase)]
#![phase(syntax)]
pub mod macros;
Run Code Online (Sandbox Code Playgroud)
macros.rs:
#![macro_escape]
#[macro_export]
macro_rules! macro(...)
Run Code Online (Sandbox Code Playgroud)
other_project.rs:
#![feature(phase, macro_rules)]
#![phase(syntax, plugin, link)] extern crate dsp;
macro!(...) // error: macro undefined: 'macro!'
Run Code Online (Sandbox Code Playgroud)
我是在正确的轨道上吗?我一直在尝试使用std :: macros作为参考,但我似乎没有太多运气.我有什么明显的遗失吗?
由于我对货物设置和大量文档的无知,我遇到了一些问题。
cargo.toml 文件是当前的:
[package]
name = "hello"
version = "0.1.0"
authors = ["PC4\\Author"]
[dependencies]
sdl2 = { version = "0.34.1", features = ["bundled", "static-link"] }
Run Code Online (Sandbox Code Playgroud)
SDL2 依赖项已编译,但实际上使用的是 Visual Studio。我真正想做的是在编译 crate 依赖项时使用另一个文件夹中的自定义编译器。
rust ×10
rust-crates ×10
rust-cargo ×5
git ×1
installation ×1
macros ×1
module ×1
multifile ×1
node.js ×1
public ×1
sdl-2 ×1