choco-solver 0.1.0

Safe interface for the Choco Solver library DLL generated by GraalVM Native Image.
Documentation
[workspace]
members = ["choco-solver-sys", "xtask"]

[workspace.dependencies]
bindgen = "0.72"

[package]
name = "choco-solver"
version = "0.1.0"
edition = "2024"
license = "MIT AND BSD-3-Clause"
repository = "https://github.com/chocoteam/chocors/"
readme = "README.md"
description = "Safe interface for the Choco Solver library DLL generated by GraalVM Native Image."
keywords = ["ffi", "bindings", "solver", "constraints"]
exclude = [".gitmodules"]

[dependencies]
tracing = "0.1.41"
tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
thiserror = "2.0.18"
choco-solver-sys = { version = "0.1.0", path = "./choco-solver-sys" }

[dev-dependencies]
trybuild = "1"


[workspace.lints.rust]

elided_lifetimes_in_paths = "warn"
explicit_outlives_requirements = "warn"
macro_use-extern_crate = "warn"
meta_variable_misuse = "warn"
missing_abi = "warn"
non-local-definitions = "warn"
redundant-lifetimes = "warn"
rust-2018-compatibility = "warn"
rust-2018-idioms = "warn"
rust-2021-compatibility = "warn"
rust-2024-compatibility = "warn"
single-use-lifetimes = "warn"
trivial-numeric-casts = "warn"
unit-bindings = "warn"
unnameable-types = "warn"
unreachable-pub = "warn"
unsafe_op_in_unsafe_fn = "warn"
unused = { level = "warn", priority = -1 }
unused-import-braces = "warn"
unused-lifetimes = "warn"
unused-qualifications = "warn"
unused_results = "warn"
variant-size-differences = "warn"

[workspace.lints.clippy]
# Must rules
as_ptr_cast_mut = "deny"
declare_interior_mutable_const = "deny"
let_underscore_must_use = "deny"
# missing_panics_doc = "deny" it is panicking only for bugs in wrapper
undocumented_unsafe_blocks = "deny"
wildcard_imports = "deny"


# Required rules.
# They can be disabled with justification

as_underscore = "warn"
cast_lossless = "warn"
cast_possible_truncation = "warn"
cast_possible_wrap = "warn"
cast_ptr_alignment = "warn"
cast_sign_loss = "warn"
exit = "warn"
format_push_string = "warn"
infinite_loop = "warn"
invalid_upcast_comparisons = "warn"
iter_over_hash_type = "warn"
lossy_float_literal = "warn"
# panic_in_result_fn = "warn"
ptr_cast_constness = "warn"
redundant_type_annotations = "warn"
ref_as_ptr = "warn"
shadow_unrelated = "warn"
transmute_ptr_to_ptr = "warn"
try_err = "warn"
# wildcard_enum_match_arm = "warn" # See below

# From https://corrode.dev/blog/defensive-programming/#:~:text=Defensive%20programming%20in%20Rust%20is,invariants%20explicit%20and%20compiler%2Dchecked
indexing_slicing = "deny"
fallible_impl_from = "deny"
unneeded_field_pattern = "deny"
fn_params_excessive_bools = "deny"
must_use_candidate = "deny"


[package.metadata.docs.rs]
targets = ["x86_64-pc-windows-msvc", "x86_64-unknown-linux-gnu"]