From 47301e2f82fb4ceaf5a830d8599fbe2a01eb9def Mon Sep 17 00:00:00 2001 From: tachsin Date: Wed, 9 Sep 2026 21:02:18 +0300 Subject: [PATCH] refactor(edmonds-karp): drop two unsafe Send impls the compiler already provides --- src/directed/edmonds_karp.rs | 4 ---- tests/edmondskarp.rs | 9 +++++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/directed/edmonds_karp.rs b/src/directed/edmonds_karp.rs index 2e8ed848..9c68cd43 100644 --- a/src/directed/edmonds_karp.rs +++ b/src/directed/edmonds_karp.rs @@ -352,8 +352,6 @@ pub struct SparseCapacity { residuals: BTreeMap>, } -unsafe impl Send for SparseCapacity {} - impl SparseCapacity { fn set_value(data: &mut BTreeMap>, from: usize, to: usize, value: C) { let to_remove = { @@ -479,8 +477,6 @@ pub struct DenseCapacity { flows: Matrix, } -unsafe impl Send for DenseCapacity {} - impl EdmondsKarp for DenseCapacity { fn new(size: usize, source: usize, sink: usize) -> Self { assert!(source < size, "source is greater or equal than size"); diff --git a/tests/edmondskarp.rs b/tests/edmondskarp.rs index e96ca6aa..441917c5 100644 --- a/tests/edmondskarp.rs +++ b/tests/edmondskarp.rs @@ -273,3 +273,12 @@ fn set_capacity_test() { ek.augment(); residual_capacities_non_negative(&ek); } + +#[test] +fn capacities_are_send_without_an_unsafe_impl() { + // Every field of both types is `Send` when `C` is, so the compiler derives this on its + // own; the assertion is here so that a field which is not can never be added silently. + const fn assert_send() {} + assert_send::>(); + assert_send::>(); +}