argmin-rs / argmin

Numerical optimization in pure Rust
http://argmin-rs.org
Apache License 2.0
942 stars 74 forks source link

Make `Solver` object safe #487

Closed jjbayer closed 3 months ago

jjbayer commented 3 months ago

Replace associated constant for solver names with a method to make Solver object safe.

A trait is object safe if it has the following qualities (defined in RFC 255):

  • [...]
  • It must not have any associated constants.

https://doc.rust-lang.org/beta/reference/items/traits.html#object-safety

codecov-commenter commented 3 months ago

Codecov Report

Attention: Patch coverage is 7.95455% with 81 lines in your changes are missing coverage. Please review.

Project coverage is 92.11%. Comparing base (73c52ce) to head (d526949).

Files Patch % Lines
crates/argmin/src/core/test_utils.rs 0.00% 3 Missing :warning:
crates/argmin/src/solver/brent/brentopt.rs 0.00% 3 Missing :warning:
crates/argmin/src/solver/brent/brentroot.rs 0.00% 3 Missing :warning:
crates/argmin/src/solver/conjugategradient/cg.rs 0.00% 3 Missing :warning:
...rgmin/src/solver/conjugategradient/nonlinear_cg.rs 0.00% 3 Missing :warning:
...n/src/solver/gaussnewton/gaussnewton_linesearch.rs 0.00% 3 Missing :warning:
...rgmin/src/solver/gaussnewton/gaussnewton_method.rs 0.00% 3 Missing :warning:
...rates/argmin/src/solver/goldensectionsearch/mod.rs 0.00% 3 Missing :warning:
crates/argmin/src/solver/landweber/mod.rs 0.00% 3 Missing :warning:
...rates/argmin/src/solver/linesearch/backtracking.rs 0.00% 3 Missing :warning:
... and 18 more
Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #487 +/- ## ========================================== - Coverage 92.42% 92.11% -0.31% ========================================== Files 178 178 Lines 24314 24398 +84 ========================================== + Hits 22471 22475 +4 - Misses 1843 1923 +80 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

jjbayer commented 3 months ago

Requires https://github.com/argmin-rs/argmin/pull/488 to pass CI.