# Copyright 2026 Gabriel Bjørnager Jensen.
#
# This file is part of LOOKLOOK.
#
# LOOKLOOK is free software: you can redistribute
# it and/or modify it under the terms of the GNU
# Affero General Public License as published by
# the Free Software Foundation, either version 3
# of the License, or (at your option) any later
# version.
#
# LOOKLOOK is distributed in the hope that it will
# be useful, but WITHOUT ANY WARRANTY; without
# even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Affero General Public License for more details.
#
# You should have received a copy of the GNU Af-
# fero General Public License along with LOOKLOOK.
# If not, see <https://www.gnu.org/licenses/>.

[package]
name          = "looklook"
version       = "0.2.0" # Remember consts.
edition       = "2024"
description   = "Signal synthesiser."
documentation = "https://docs.rs/looklook/"
repository    = "https://mandelbrot.dk/bjoernager/looklook/"
license       = "AGPL-3.0-or-later"

[package.metadata.docs.rs]
all-features = true

[dependencies]
oct = "0.38"

png = { version = "0.18", features = ["unstable"] }

[lints.clippy]
approx_constant                     = "warn"
arc_with_non_send_sync              = "warn"
as_pointer_underscore               = "forbid"
as_ptr_cast_mut                     = "forbid"
as_underscore                       = "forbid"
assertions_on_constants             = "warn"
assertions_on_result_states         = "warn"
assign_op_pattern                   = "warn"
assigning_clones                    = "warn"
async_yields_async                  = "forbid"
bool_to_int_with_if                 = "warn"
borrow_as_ptr                       = "forbid"
branches_sharing_code               = "warn"
cast_enum_truncation                = "forbid"
cast_lossless                       = "warn"
cast_ptr_alignment                  = "forbid"
checked_conversions                 = "warn"
clear_with_drain                    = "warn"
clone_on_ref_ptr                    = "warn"
cloned_instead_of_copied            = "warn"
collection_is_never_read            = "warn"
dbg_macro                           = "warn"
debug_assert_with_mut_call          = "warn"
default_constructed_unit_structs    = "forbid"
deref_by_slicing                    = "warn"
derive_partial_eq_without_eq        = "warn"
derived_hash_with_manual_eq         = "forbid"
empty_docs                          = "forbid"
empty_enum_variants_with_brackets   = "warn"
empty_line_after_doc_comments       = "forbid"
empty_line_after_outer_attr         = "forbid"
empty_loop                          = "allow"
empty_structs_with_brackets         = "warn"
enum_glob_use                       = "forbid"
enum_variant_names                  = "allow"
equatable_if_let                    = "warn"
excessive_precision                 = "allow"
expl_impl_clone_on_copy             = "allow"
explicit_deref_methods              = "warn"
explicit_into_iter_loop             = "warn"
explicit_iter_loop                  = "warn"
fallible_impl_from                  = "warn"
flat_map_option                     = "warn"
float_cmp                           = "deny" # Fortran, is that you?
float_cmp_const                     = "deny"
fn_to_numeric_cast                  = "forbid"
fn_to_numeric_cast_any              = "forbid"
fn_to_numeric_cast_with_truncation  = "forbid"
format_push_string                  = "warn"
from_iter_instead_of_collect        = "warn"
future_not_send                     = "forbid"
identity_op                         = "allow"
if_not_else                         = "warn"
ignored_unit_patterns               = "forbid"
implicit_clone                      = "warn"
imprecise_flops                     = "forbid"
incompatible_msrv                   = "deny"
inconsistent_struct_constructor     = "forbid"
index_refutable_slice               = "warn"
inefficient_to_string               = "warn"
infinite_loop                       = "forbid"
inherent_to_string_shadow_display   = "allow"
into_iter_without_iter              = "warn"
invalid_upcast_comparisons          = "warn"
iter_filter_is_ok                   = "warn"
iter_filter_is_some                 = "warn"
iter_not_returning_iterator         = "warn"
iter_on_empty_collections           = "warn"
iter_on_single_items                = "warn"
iter_with_drain                     = "warn"
iter_without_into_iter              = "warn"
large_enum_variant                  = "allow"
let_unit_value                      = "forbid"
macro_use_imports                   = "warn"
manual_assert                       = "warn"
manual_c_str_literals               = "warn"
manual_instant_elapsed              = "warn"
manual_is_variant_and               = "warn"
manual_let_else                     = "warn"
manual_ok_or                        = "warn"
manual_string_new                   = "warn"
map_unwrap_or                       = "warn"
mismatching_type_param_order        = "warn"
missing_docs_in_private_items       = "warn"
missing_errors_doc                  = "warn"
missing_transmute_annotations       = "forbid"
mixed_read_write_in_expression      = "forbid"
mod_module_files                    = "forbid"
module_inception                    = "allow"
must_use_unit                       = "deny"
mut_mut                             = "warn"
mutex_atomic                        = "deny"
mutex_integer                       = "deny"
needless_arbitrary_self_type        = "warn"
needless_collect                    = "warn"
needless_continue                   = "warn"
needless_raw_string_hashes          = "warn"
needless_raw_strings                = "warn"
needless_type_cast                  = "warn"
never_loop                          = "warn"
no_effect_underscore_binding        = "warn"
no_mangle_with_rust_abi             = "forbid"
non_ascii_literal                   = "forbid"
non_canonical_partial_ord_impl      = "allow"
nonstandard_macro_braces            = "forbid"
obfuscated_if_else                  = "allow"
option_as_ref_cloned                = "warn"
option_map_unit_fn                  = "warn"
option_option                       = "warn"
partialeq_ne_impl                   = "allow"
path_buf_push_overwrite             = "warn"
pattern_type_mismatch               = "forbid"
precedence                          = "allow"
ptr_as_ptr                          = "forbid"
ptr_cast_constness                  = "forbid"
pub_underscore_fields               = "forbid"
range_plus_one                      = "warn"
rc_buffer                           = "forbid"
rc_mutex                            = "forbid"
read_zero_byte_vec                  = "warn"
redundant_clone                     = "warn"
redundant_closure_for_method_calls  = "warn"
redundant_else                      = "warn"
redundant_type_annotations          = "warn"
ref_as_ptr                          = "forbid"
ref_binding_to_reference            = "warn"
ref_option_ref                      = "warn"
repr_packed_without_abi             = "allow"
rest_pat_in_fully_bound_structs     = "warn"
result_map_unit_fn                  = "forbid"
result_unit_err                     = "forbid"
return_self_not_must_use            = "warn"
same_functions_in_if_condition      = "warn"
same_name_method                    = "deny"
single_char_pattern                 = "warn"
str_split_at_newline                = "warn"
string_lit_as_bytes                 = "forbid"
string_lit_chars_any                = "warn"
suboptimal_flops                    = "warn"
todo                                = "warn"
trait_duplication_in_bounds         = "forbid"
transmute_ptr_to_ptr                = "forbid"
transmutes_expressible_as_ptr_casts = "forbid"
type_repetition_in_bounds           = "forbid"
uninlined_format_args               = "forbid"
unit_arg                            = "forbid"
unit_cmp                            = "forbid"
unit_hash                           = "forbid"
unit_return_expecting_ord           = "forbid"
unnecessary_join                    = "warn"
unnecessary_self_imports            = "forbid"
unnecessary_wraps                   = "warn"
unneeded_field_pattern              = "warn"
unnested_or_patterns                = "warn"
unseparated_literal_suffix          = "warn"
unused_async                        = "warn"
unused_peekable                     = "warn"
unused_rounding                     = "warn"
unused_unit                         = "forbid"
use_self                            = "forbid"
used_underscore_binding             = "warn"
useless_let_if_seq                  = "warn"
useless_transmute                   = "deny"
verbose_bit_mask                    = "warn"
wildcard_dependencies               = "forbid"
zero_prefixed_literal               = "allow"
zero_ptr                            = "forbid"

[lints.rust]
absolute_paths_not_starting_with_crate = "forbid"
closure_returning_async_block          = "warn"
deref_into_dyn_supertrait              = "deny"
explicit_outlives_requirements         = "warn"
ffi_unwind_calls                       = "warn"
impl_trait_overcaptures                = "forbid"
impl_trait_redundant_captures          = "warn"
invalid_atomic_ordering                = "forbid"
internal_features                      = "allow"
macro_use_extern_crate                 = "forbid"
meta_variable_misuse                   = "warn"
missing_docs                           = "warn"
missing_unsafe_on_extern               = "forbid"
non_ascii_idents                       = "forbid"
redundant_imports                      = "warn"
redundant_lifetimes                    = "warn"
single_use_lifetimes                   = "warn"
trivial_casts                          = "warn"
trivial_numeric_casts                  = "warn"
unnameable_types                       = "deny"
unsafe_attr_outside_unsafe             = "forbid"
unsafe_op_in_unsafe_fn                 = "forbid"
unused_features                        = "allow"
unused_import_braces                   = "warn"
unused_lifetimes                       = "warn"
unused_qualifications                  = "warn"

[profile.release]
opt-level     = 3
lto           = "fat"
panic         = "abort"
codegen-units = 1
