我有一个铁 rust 项目(这是一个扫雷游戏的实现).
游戏本身的所有功能都是以库的形式编写的,因此它可以1)在crates.io上以 crate 的形式共享,2)与不同的前端一起使用.
目前我有两个前端:第一个是debug_main
,这只是游戏最基本的文本输入/输出;另一个是main
,它是用ratatui编写的TUI.
目前的问题是我不喜欢这种文件 struct .最大的问题是,现在bin
文件夹中的所有内容都被视为单独的可执行文件.因此,我可以运行cargo run --bin main
和--bin debug_main
以及--bin app
和--bin game_ui
,这不是我想要的,因为只有两个可执行文件:main
和debug_main
,而所有其他文件(app
、event
、game_ui
、menu_ui
、tui
和update
)都是main
的依赖项.
这个文件 struct comes from ratatui:因为它是一个框架,而不仅仅是一个库,它规定了要坚持的文件/项目 struct (显然,我知道我可以偏离它,但不是一个足够专业的人来认为"我知道得更好").
因此,他们所规定的,实际上是将你的应用程序分割成一个可执行文件(main
)和库(所有其他文件).但对我(as i understand it岁)来说,有一个问题是我已经有了自由.据我所知,每个 crate 不可能有超过一个lib.
在我的情况下我该怎么做?我如何至少提取bin
文件夹中的所有文件(除了main
和debug_main
这两个可执行文件),使它们不会也成为可执行文件?当我的项目被分成1个库和许多二进制文件,但同时二进制文件本身可能需要底层库时,我应该如何组织它?In general,我如何将项目中的事情安排得井然有序?最好的推荐是什么?
作为参考,下面是Cargo.toml
个文件的内容(没有什么特别之处):
[package]
name = "miners"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
clap = { version = "4.4.18", features = ["derive"] }
color-eyre = "0.6.2"
crossterm = "0.27.0"
rand = "0.8.5"
ratatui = "0.25.0"
以下是main.rs
年度的mod
项声明:
mod app;
mod event;
mod game_ui;
mod menu_ui;
mod tui;
mod update;
在debug_main
年内
use miners::{field::Field, Minesweeper, MinesweeperAction, MinesweeperStatus};