[workspace]
members = [
  "crates/app",
  "crates/eval",
  "crates/ir", 
  "crates/lang", 
  "crates/svg-filters",
  "crates/prowocessing", 
  "crates/executor-poc",
]
resolver = "2"

[workspace.dependencies]
clap = { version = "4", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
petgraph = "0.6.4"

# to enable all the lints below, this must be present in a workspace member's Cargo.toml:
# [lints]
# workspace = true

[workspace.lints.rust]
unsafe_code = "deny"
variant_size_differences = "warn"

[workspace.lints.clippy]
branches_sharing_code = "warn"
clone_on_ref_ptr = "warn"
cognitive_complexity = "warn"
derive_partial_eq_without_eq = "warn"
equatable_if_let = "warn"
filetype_is_file = "warn"
format_push_string = "warn"
if_then_some_else_none = "warn"
integer_division = "warn"
let_underscore_must_use = "warn"
manual_clamp = "warn"
pedantic = "warn"
str_to_string = "warn"
unneeded_field_pattern = "warn"
unnested_or_patterns = "warn"

allow_attributes_without_reason = "deny"
cast_lossless = "deny"
fallible_impl_from = "deny"
unnecessary_cast = "deny"
unwrap_used = "deny"
# allowed, since you can give reasons
expect_used = "allow"

# must be allowed with clearly documented reasons
indexing_slicing = "allow"

module_name_repetitions = "allow"
must_use_candidate = "allow"

# TODO: more granular and clean
missing_panics_doc = "allow"
missing_errors_doc = "allow"
