-
-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathCargo.toml
More file actions
116 lines (98 loc) · 3.78 KB
/
Copy pathCargo.toml
File metadata and controls
116 lines (98 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
[workspace]
members = [
# Archives
"file-formats/archives/wow-mpq",
# World Data
"file-formats/world-data/wow-adt",
"file-formats/world-data/wow-wdl",
"file-formats/world-data/wow-wdt",
# Graphics
"file-formats/graphics/wow-blp",
"file-formats/graphics/wow-m2",
"file-formats/graphics/wow-wmo",
# Database
"file-formats/database/wow-cdbc",
# FFI
"ffi/storm-ffi",
# CLI
"warcraft-rs",
]
resolver = "2"
[workspace.package]
version = "0.7.0"
authors = ["Daniel S. Reichenbach <daniel@kogito.network>"]
edition = "2024"
rust-version = "1.92"
license = "MIT OR Apache-2.0"
repository = "https://github.com/wowemulation-dev/warcraft-rs"
homepage = "https://github.com/wowemulation-dev/warcraft-rs"
[workspace.dependencies]
# Error handling
thiserror = "2.0"
anyhow = "1.0"
# Logging
log = "0.4"
env_logger = "0.11"
# Data structures and utilities
rand = "0.9"
tempfile = "3.24"
bitflags = "2.10"
bytes = "1.11"
memchr = "2.7"
glam = "0.31"
memmap2 = "0.9"
rayon = "1.11"
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml_ng = "0.10"
binrw = "0.15.0"
csv = "1.4"
# CLI utilities
clap = { version = "4.5", features = ["derive"] }
indicatif = "0.18"
# FFI
libc = "0.2.180"
# Development
criterion = { version = "0.8", features = ["html_reports"] }
pretty_assertions = "1.4"
test-case = "3.3"
proptest = "1.5"
assert_cmd = "2.0"
predicates = "3.1"
[workspace.lints.rust]
unsafe_code = "warn"
[workspace.lints.clippy]
# Enable all major lint groups
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
cargo = { level = "warn", priority = -1 }
# Strict safety lints (library code should not panic)
unwrap_used = "warn" # Use expect() with message or proper error handling
expect_used = "warn" # Prefer proper error handling over expect()
panic = "warn" # Libraries should return Result, not panic
unreachable = "warn" # Use proper error types instead
# Code quality lints
dbg_macro = "warn" # Remove debug macros before commit
print_stdout = "warn" # Use log/tracing instead of println!
print_stderr = "warn" # Use log/tracing instead of eprintln!
todo = "warn" # Track incomplete code
unimplemented = "warn" # Track unimplemented code
# Domain-specific allows (binary format parsing)
module_name_repetitions = "allow" # wow_mpq::mpq is reasonable
multiple_crate_versions = "allow" # Dependencies may pull in multiple versions
missing_errors_doc = "allow" # Error types are self-documenting via thiserror
missing_const_for_fn = "allow" # Not all functions can be const in practice
must_use_candidate = "allow" # Not every pure function needs #[must_use]
missing_panics_doc = "allow" # Panics are often unreachable in practice
too_many_lines = "allow" # Long functions are sometimes necessary
cast_sign_loss = "allow" # Binary format parsing requires unsigned casts
cast_possible_truncation = "allow" # Binary format parsing requires size conversions
option_if_let_else = "allow" # Match can be clearer than map_or
explicit_iter_loop = "allow" # .iter() is sometimes more explicit
type_complexity = "allow" # Complex types sometimes needed for async
cast_lossless = "allow" # as casts are fine for numeric conversions
uninlined_format_args = "allow" # Format args don't always need inlining
single_match_else = "allow" # Sometimes match is clearer than if let
unused_self = "allow" # &self can be for consistency even if unused