我想做一个daemonclient的项目,通过unix套接字连接.

clientdaemon需要两个二进制文件,那么我如何告诉Cargo从两个不同的源构建两个目标呢?

为了增加一点幻想,我希望daemon的主要部分有一个library,然后有一个二进制文件包起来,通过套接字进行通信.

所以,我们有这种树 struct :

├── Cargo.toml
├── target
|   └── debug
|       ├── daemon
│       └── client
└── src
    ├── daemon
    │   ├── bin
    │   │   └── main.rs
    │   └── lib
    │       └── lib.rs
    └── client
        └── bin
            └── main.rs

我可以制作一个管理这两个问题的可执行文件,但这不是我想要做的,除非这是非常好的实践.

推荐答案

您可以使用[[bin]]指定多个二进制文件,如here所述:

[[bin]]
name = "daemon"
path = "src/daemon/bin/main.rs"

[[bin]]
name = "client"
path = "src/client/bin/main.rs"

提示:如果你把这些文件放在src/bin/daemon.rssrc/bin/client.rs中,你会得到两个名为daemonclient的可执行文件,因为Cargo会自动将src/bin中的所有文件编译成同名的可执行文件.只有在不遵循此约定的情况下,才需要像上面的代码段中那样指定名称和路径.

Rust相关问答推荐

使用InlineTables序列化toml ArrayOfTables

用 rust 蚀中的future 展望 struct 的future

在rust sqlx中使用ilike和push bind

如何在函数中返回自定义字符串引用?

无符号整数的Rust带符号差

JSON5中的变量类型(serde)

关于 map 闭合求和的问题

为什么不';t(&;mut-iter).take(n)取得iter的所有权?

是否可以使用Serde/Rust全局处理无效的JSON值?

找不到 .has_func 或 .get_func 的 def

try 实现线程安全的缓存

如何在 Rust 中编写一个通用方法,它可以接受任何可以转换为另一个值的值?

Rust中的一生语法有什么作用?

仅当函数写为闭包时才会出现生命周期错误

一个函数调用会产生双重borrow 错误,而另一个则不会

为什么传递 option.as_ref 的行为不同于使用匹配块并将内部映射到 ref 自己?

在 Traits 函数中设置生命周期的问题

为什么-x试图解析为文字并在声明性宏中失败?

如何从 many0 传播 Nom 失败上下文?

Rust 生命周期:不能在方法内重新borrow 可变字段