as a minor style nit (feel free to take or leave), since feerate_per_kvb is computed once at the very top of ToString() and remains constant for the lifetime of the function, providing it explicitly into every lambda invocation adds a bit of visual noise.
capturing it by reference instead lets the lambda access it directly from the surrounding scope, which simplifies the signature a little and keeps the switch cases slightly cleaner/readable:
diff --git a/src/policy/feerate.cpp b/src/policy/feerate.cpp
index d511c5fb28..2c574f774b 100644
--- a/src/policy/feerate.cpp
+++ b/src/policy/feerate.cpp
@@ -30,16 +30,16 @@ CAmount CFeeRate::GetFee(int32_t virtual_bytes) const
std::string CFeeRate::ToString(FeeRateFormat fee_rate_format) const
{
const CAmount feerate_per_kvb{GetFeePerK()};
- const auto format_feerate = [](const CAmount fee_rate, const CAmount divisor, const int decimals, const std::string& currency_unit, const std::string& size_unit) {
+ const auto format_feerate = [&feerate_per_kvb](const CAmount divisor, const int decimals, const std::string& currency_unit, const std::string& size_unit) {
Assert(divisor > 0);
- const char* sign{fee_rate < 0 ? "-" : ""};
- const CAmount quotient{std::abs(fee_rate / divisor)};
- const CAmount remainder{std::abs(fee_rate % divisor)};
+ const char* sign{feerate_per_kvb < 0 ? "-" : ""};
+ const CAmount quotient{std::abs(feerate_per_kvb / divisor)};
+ const CAmount remainder{std::abs(feerate_per_kvb % divisor)};
return strprintf("%s%d.%0*d %s/%s", sign, quotient, decimals, remainder, currency_unit, size_unit);
};
switch (fee_rate_format) {
- case FeeRateFormat::BTC_KVB: return format_feerate(feerate_per_kvb, COIN, 8, CURRENCY_UNIT, "kvB");
- case FeeRateFormat::SAT_VB: return format_feerate(feerate_per_kvb, 1000, 3, CURRENCY_ATOM, "vB");
+ case FeeRateFormat::BTC_KVB: return format_feerate(COIN, 8, CURRENCY_UNIT, "kvB");
+ case FeeRateFormat::SAT_VB: return format_feerate(1000, 3, CURRENCY_ATOM, "vB");
} // no default case, so the compiler can warn about missing cases
assert(false);
}
what do you think ?