コンテンツにスキップ

Rust

mille.toml の設定例

[project]
name = "my-app"
root = "."
languages = ["rust"]
[[layers]]
name = "domain"
paths = ["src/domain/**"]
dependency_mode = "opt-in"
allow = []
external_mode = "opt-in"
external_allow = []
[[layers]]
name = "usecase"
paths = ["src/usecase/**"]
dependency_mode = "opt-in"
allow = ["domain"]
external_mode = "opt-in"
external_allow = []
[[layers]]
name = "infrastructure"
paths = ["src/infrastructure/**"]
dependency_mode = "opt-out"
deny = []
external_mode = "opt-out"
external_deny = []
[[layers]]
name = "main"
paths = ["src/main.rs"]
dependency_mode = "opt-in"
allow = ["domain", "infrastructure", "usecase"]
external_mode = "opt-in"
external_allow = ["clap"]
[[layers.allow_call_patterns]]
callee_layer = "infrastructure"
allow_methods = ["new", "build", "create", "init", "setup"]

インポートの分類

インポート分類
use crate::domain::...内部(<crate_name>:: で始まるもの)
use super::...内部
use serde::Serialize外部

mille init の動作

Cargo.toml からクレート名を自動検出し、crate:: プレフィックスを Internal に分類します。

Terminal window
mille init
# → mille.toml を自動生成

dogfooding

mille 自身も mille でアーキテクチャを検査しています。設定例は mille.toml を参照してください。