commit 0217ab2b732023589a5ad658855cdf3c2f33a097
parent e5b2b99c31f78eb63a3802e889226bf742833757
Author: triesap <tyson@radroots.org>
Date: Sun, 15 Feb 2026 17:51:05 +0000
trade: apply cargo fmt
Diffstat:
6 files changed, 166 insertions(+), 112 deletions(-)
diff --git a/trade/src/listing/codec.rs b/trade/src/listing/codec.rs
@@ -7,19 +7,19 @@ use radroots_core::{
RadrootsCoreCurrency, RadrootsCoreDecimal, RadrootsCoreDiscount, RadrootsCoreMoney,
RadrootsCoreQuantity, RadrootsCoreQuantityPrice, RadrootsCoreUnit,
};
+use radroots_events::kinds::{KIND_FARM, KIND_PLOT, KIND_RESOURCE_AREA};
use radroots_events::listing::{
RadrootsListing, RadrootsListingAvailability, RadrootsListingBin,
RadrootsListingDeliveryMethod, RadrootsListingFarmRef, RadrootsListingImage,
RadrootsListingImageSize, RadrootsListingLocation, RadrootsListingProduct,
RadrootsListingStatus,
};
-use radroots_events::kinds::{KIND_FARM, KIND_PLOT, KIND_RESOURCE_AREA};
use radroots_events::plot::RadrootsPlotRef;
use radroots_events::resource_area::RadrootsResourceAreaRef;
use radroots_events::tags::TAG_D;
use radroots_events_codec::d_tag::is_d_tag_base64url;
use radroots_events_codec::error::EventEncodeError;
-use radroots_events_codec::listing::tags::{listing_tags_with_options, ListingTagOptions};
+use radroots_events_codec::listing::tags::{ListingTagOptions, listing_tags_with_options};
#[cfg(feature = "ts-rs")]
use ts_rs::TS;
@@ -153,7 +153,9 @@ pub fn listing_from_event_parts(
match listing.plot.as_ref() {
None => listing.plot = Some(tag_plot),
Some(existing) => {
- if existing.pubkey != tag_plot.pubkey || existing.d_tag != tag_plot.d_tag {
+ if existing.pubkey != tag_plot.pubkey
+ || existing.d_tag != tag_plot.d_tag
+ {
return Err(TradeListingParseError::InvalidTag(
TAG_RADROOTS_PLOT.to_string(),
));
@@ -169,7 +171,9 @@ pub fn listing_from_event_parts(
listing_from_tags(tags, d_tag, farm_ref, farm_pubkey, resource_area, plot)
}
-pub fn listing_tags_build(listing: &RadrootsListing) -> Result<Vec<Vec<String>>, TradeListingParseError> {
+pub fn listing_tags_build(
+ listing: &RadrootsListing,
+) -> Result<Vec<Vec<String>>, TradeListingParseError> {
let options = ListingTagOptions::with_trade_fields();
listing_tags_with_options(listing, options).map_err(map_listing_tags_error)
}
@@ -223,9 +227,9 @@ fn listing_from_tags(
let mut images: Vec<RadrootsListingImage> = Vec::new();
let mut geohash: Option<String> = None;
- let has_structured_location = tags.iter().any(|tag| {
- tag.get(0).map(|k| k.as_str()) == Some(TAG_LOCATION) && tag.len() >= 3
- });
+ let has_structured_location = tags
+ .iter()
+ .any(|tag| tag.get(0).map(|k| k.as_str()) == Some(TAG_LOCATION) && tag.len() >= 3);
for tag in tags {
if tag.is_empty() {
@@ -243,8 +247,9 @@ fn listing_from_tags(
if tag.len() >= 3
|| (!has_structured_location && location.is_none() && tag.len() >= 2)
{
- let primary =
- tag.get(1).ok_or_else(|| TradeListingParseError::InvalidTag(TAG_LOCATION.to_string()))?;
+ let primary = tag.get(1).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_LOCATION.to_string())
+ })?;
if primary.trim().is_empty() {
return Err(TradeListingParseError::InvalidTag(TAG_LOCATION.to_string()));
}
@@ -277,10 +282,9 @@ fn listing_from_tags(
let _ = tag;
}
TAG_RADROOTS_PRIMARY_BIN => {
- let value = tag
- .get(1)
- .and_then(|v| clean_value(v))
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_PRIMARY_BIN.to_string()))?;
+ let value = tag.get(1).and_then(|v| clean_value(v)).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_PRIMARY_BIN.to_string())
+ })?;
if let Some(existing) = primary_bin_id.as_ref() {
if existing != &value {
return Err(TradeListingParseError::InvalidTag(
@@ -293,29 +297,36 @@ fn listing_from_tags(
}
TAG_RADROOTS_BIN => {
if tag.len() < 4 {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_BIN.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_BIN.to_string(),
+ ));
}
if tag.len() > 7 {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_BIN.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_BIN.to_string(),
+ ));
}
- let bin_id = tag
- .get(1)
- .and_then(|v| clean_value(v))
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_BIN.to_string()))?;
- let amount = tag
- .get(2)
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_BIN.to_string()))?;
- let unit = tag
- .get(3)
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_BIN.to_string()))?;
+ let bin_id = tag.get(1).and_then(|v| clean_value(v)).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_BIN.to_string())
+ })?;
+ let amount = tag.get(2).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_BIN.to_string())
+ })?;
+ let unit = tag.get(3).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_BIN.to_string())
+ })?;
let amount = parse_decimal(amount, TAG_RADROOTS_BIN)?;
let unit = parse_unit(unit)?;
if unit != unit.canonical_unit() {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_BIN.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_BIN.to_string(),
+ ));
}
let bin = upsert_bin(&mut bin_drafts, &bin_id, &mut bin_order);
if bin.quantity.is_some() {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_BIN.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_BIN.to_string(),
+ ));
}
bin.quantity = Some(RadrootsCoreQuantity::new(amount, unit));
@@ -337,27 +348,30 @@ fn listing_from_tags(
}
TAG_RADROOTS_PRICE => {
if tag.len() < 6 {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_PRICE.to_string(),
+ ));
}
if tag.len() > 8 {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_PRICE.to_string(),
+ ));
}
- let bin_id = tag
- .get(1)
- .and_then(|v| clean_value(v))
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string()))?;
- let amount = tag
- .get(2)
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string()))?;
- let currency = tag
- .get(3)
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string()))?;
- let per_amount = tag
- .get(4)
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string()))?;
- let per_unit = tag
- .get(5)
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string()))?;
+ let bin_id = tag.get(1).and_then(|v| clean_value(v)).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string())
+ })?;
+ let amount = tag.get(2).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string())
+ })?;
+ let currency = tag.get(3).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string())
+ })?;
+ let per_amount = tag.get(4).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string())
+ })?;
+ let per_unit = tag.get(5).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string())
+ })?;
let amount = parse_decimal(amount, TAG_RADROOTS_PRICE)?;
let currency = parse_currency(currency)?;
let per_amount = parse_decimal(per_amount, TAG_RADROOTS_PRICE)?;
@@ -367,16 +381,22 @@ fn listing_from_tags(
RadrootsCoreQuantity::new(per_amount, per_unit),
);
if !price_per_canonical_unit.is_price_per_canonical_unit() {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_PRICE.to_string(),
+ ));
}
let bin = upsert_bin(&mut bin_drafts, &bin_id, &mut bin_order);
if bin.price_per_canonical_unit.is_some() {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_PRICE.to_string(),
+ ));
}
bin.price_per_canonical_unit = Some(price_per_canonical_unit);
if tag.len() == 7 {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_PRICE.to_string(),
+ ));
}
if tag.len() == 8 {
let display_price = tag.get(6).ok_or_else(|| {
@@ -392,9 +412,9 @@ fn listing_from_tags(
}
}
TAG_RADROOTS_DISCOUNT => {
- let payload = tag
- .get(1)
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_DISCOUNT.to_string()))?;
+ let payload = tag.get(1).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_DISCOUNT.to_string())
+ })?;
let discount = parse_discount(payload)?;
discounts.push(discount);
}
@@ -404,24 +424,26 @@ fn listing_from_tags(
}
}
TAG_INVENTORY => {
- let value = tag.get(1).ok_or_else(|| TradeListingParseError::InvalidTag(TAG_INVENTORY.to_string()))?;
+ let value = tag
+ .get(1)
+ .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_INVENTORY.to_string()))?;
inventory_available = Some(parse_decimal(value, TAG_INVENTORY)?);
}
TAG_PUBLISHED_AT => {
- let value = tag.get(1).ok_or_else(|| TradeListingParseError::InvalidTag(TAG_PUBLISHED_AT.to_string()))?;
- availability_start = Some(
- value
- .parse::<u64>()
- .map_err(|_| TradeListingParseError::InvalidNumber(TAG_PUBLISHED_AT.to_string()))?,
- );
+ let value = tag.get(1).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_PUBLISHED_AT.to_string())
+ })?;
+ availability_start = Some(value.parse::<u64>().map_err(|_| {
+ TradeListingParseError::InvalidNumber(TAG_PUBLISHED_AT.to_string())
+ })?);
}
TAG_EXPIRES_AT => {
- let value = tag.get(1).ok_or_else(|| TradeListingParseError::InvalidTag(TAG_EXPIRES_AT.to_string()))?;
- availability_end = Some(
- value
- .parse::<u64>()
- .map_err(|_| TradeListingParseError::InvalidNumber(TAG_EXPIRES_AT.to_string()))?,
- );
+ let value = tag.get(1).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_EXPIRES_AT.to_string())
+ })?;
+ availability_end = Some(value.parse::<u64>().map_err(|_| {
+ TradeListingParseError::InvalidNumber(TAG_EXPIRES_AT.to_string())
+ })?);
}
TAG_STATUS => {
let status = tag.get(1).and_then(|v| clean_value(v)).unwrap_or_default();
@@ -443,7 +465,9 @@ fn listing_from_tags(
});
}
TAG_IMAGE => {
- let url = tag.get(1).ok_or_else(|| TradeListingParseError::InvalidTag(TAG_IMAGE.to_string()))?;
+ let url = tag
+ .get(1)
+ .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_IMAGE.to_string()))?;
if url.trim().is_empty() {
continue;
}
@@ -494,17 +518,28 @@ fn listing_from_tags(
bins,
resource_area,
plot,
- discounts: if discounts.is_empty() { None } else { Some(discounts) },
+ discounts: if discounts.is_empty() {
+ None
+ } else {
+ Some(discounts)
+ },
inventory_available,
availability,
delivery_method,
location,
- images: if images.is_empty() { None } else { Some(images) },
+ images: if images.is_empty() {
+ None
+ } else {
+ Some(images)
+ },
})
}
fn parse_farm_ref(tags: &[Vec<String>]) -> Result<RadrootsListingFarmRef, TradeListingParseError> {
- for tag in tags.iter().filter(|t| t.get(0).map(|s| s.as_str()) == Some(TAG_A)) {
+ for tag in tags
+ .iter()
+ .filter(|t| t.get(0).map(|s| s.as_str()) == Some(TAG_A))
+ {
let value = tag
.get(1)
.map(|s| s.to_string())
@@ -560,15 +595,16 @@ fn parse_resource_area(
let Some(tag) = tag else {
return Ok(None);
};
- let value = tag
- .get(1)
- .map(|s| s.to_string())
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_RESOURCE_AREA.to_string()))?;
+ let value = tag.get(1).map(|s| s.to_string()).ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_RESOURCE_AREA.to_string())
+ })?;
let mut parts = value.splitn(3, ':');
let kind = parts
.next()
.and_then(|v| v.parse::<u32>().ok())
- .ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_RESOURCE_AREA.to_string()))?;
+ .ok_or_else(|| {
+ TradeListingParseError::InvalidTag(TAG_RADROOTS_RESOURCE_AREA.to_string())
+ })?;
if kind != KIND_RESOURCE_AREA {
return Err(TradeListingParseError::InvalidTag(
TAG_RADROOTS_RESOURCE_AREA.to_string(),
@@ -612,7 +648,9 @@ fn parse_plot_ref(tags: &[Vec<String>]) -> Result<Option<RadrootsPlotRef>, Trade
.and_then(|v| v.parse::<u32>().ok())
.ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_PLOT.to_string()))?;
if kind != KIND_PLOT {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_PLOT.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_PLOT.to_string(),
+ ));
}
let pubkey = parts
.next()
@@ -623,10 +661,14 @@ fn parse_plot_ref(tags: &[Vec<String>]) -> Result<Option<RadrootsPlotRef>, Trade
.ok_or_else(|| TradeListingParseError::InvalidTag(TAG_RADROOTS_PLOT.to_string()))?
.to_string();
if pubkey.trim().is_empty() || d_tag.trim().is_empty() {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_PLOT.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_PLOT.to_string(),
+ ));
}
if !is_d_tag_base64url(&d_tag) {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_PLOT.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_PLOT.to_string(),
+ ));
}
Ok(Some(RadrootsPlotRef { pubkey, d_tag }))
}
@@ -690,10 +732,7 @@ mod tests {
RadrootsCoreUnit::MassG
);
assert_eq!(
- listing.bins[0]
- .display_unit
- .expect("display unit")
- .code(),
+ listing.bins[0].display_unit.expect("display unit").code(),
"kg"
);
}
@@ -836,18 +875,22 @@ fn upsert_bin<'a>(
&mut bins[idx]
}
-fn build_bins(mut drafts: Vec<BinDraft>) -> Result<Vec<RadrootsListingBin>, TradeListingParseError> {
+fn build_bins(
+ mut drafts: Vec<BinDraft>,
+) -> Result<Vec<RadrootsListingBin>, TradeListingParseError> {
drafts.sort_by_key(|draft| draft.order_index);
let mut bins = Vec::with_capacity(drafts.len());
for draft in drafts {
let quantity = draft
.quantity
.ok_or_else(|| TradeListingParseError::MissingTag(TAG_RADROOTS_BIN.to_string()))?;
- let price = draft.price_per_canonical_unit.ok_or_else(|| {
- TradeListingParseError::MissingTag(TAG_RADROOTS_PRICE.to_string())
- })?;
+ let price = draft
+ .price_per_canonical_unit
+ .ok_or_else(|| TradeListingParseError::MissingTag(TAG_RADROOTS_PRICE.to_string()))?;
if quantity.unit != price.quantity.unit {
- return Err(TradeListingParseError::InvalidTag(TAG_RADROOTS_PRICE.to_string()));
+ return Err(TradeListingParseError::InvalidTag(
+ TAG_RADROOTS_PRICE.to_string(),
+ ));
}
let bin = RadrootsListingBin {
bin_id: draft.bin_id,
diff --git a/trade/src/listing/dvm.rs b/trade/src/listing/dvm.rs
@@ -19,8 +19,8 @@ use crate::listing::dvm_kinds::{
KIND_TRADE_LISTING_VALIDATE_RES,
};
use crate::listing::order::{
- TradeAnswer, TradeDiscountDecision, TradeDiscountOffer, TradeDiscountRequest, TradeFulfillmentUpdate,
- TradeOrder, TradeOrderRevision, TradeQuestion, TradeReceipt,
+ TradeAnswer, TradeDiscountDecision, TradeDiscountOffer, TradeDiscountRequest,
+ TradeFulfillmentUpdate, TradeOrder, TradeOrderRevision, TradeQuestion, TradeReceipt,
};
use crate::listing::validation::TradeListingValidationError;
@@ -180,7 +180,10 @@ impl core::fmt::Display for TradeListingEnvelopeError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
TradeListingEnvelopeError::InvalidVersion { expected, got } => {
- write!(f, "invalid envelope version: expected {expected}, got {got}")
+ write!(
+ f,
+ "invalid envelope version: expected {expected}, got {got}"
+ )
}
TradeListingEnvelopeError::MissingOrderId => {
write!(f, "missing order_id for order-scoped message")
@@ -310,7 +313,10 @@ pub struct TradeListingCancel {
#[cfg_attr(feature = "ts-rs", derive(TS))]
#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
-#[cfg_attr(feature = "serde", serde(rename_all = "snake_case", tag = "kind", content = "amount"))]
+#[cfg_attr(
+ feature = "serde",
+ serde(rename_all = "snake_case", tag = "kind", content = "amount")
+)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum TradeListingMessagePayload {
ListingValidateRequest(TradeListingValidateRequest),
@@ -345,7 +351,9 @@ mod tests {
TradeListingMessageType::ListingValidateRequest,
"",
None,
- TradeListingValidateRequest { listing_event: None },
+ TradeListingValidateRequest {
+ listing_event: None,
+ },
);
assert_eq!(
env.validate().unwrap_err(),
@@ -359,7 +367,9 @@ mod tests {
TradeListingMessageType::OrderRequest,
format!("{KIND_LISTING}:pubkey:AAAAAAAAAAAAAAAAAAAAAg"),
None,
- TradeListingValidateRequest { listing_event: None },
+ TradeListingValidateRequest {
+ listing_event: None,
+ },
);
assert_eq!(
env.validate().unwrap_err(),
diff --git a/trade/src/listing/mod.rs b/trade/src/listing/mod.rs
@@ -4,10 +4,10 @@ pub mod dvm_kinds;
pub mod kinds;
pub mod meta;
pub mod model;
+pub mod order;
pub mod price_ext;
pub mod tags;
pub mod validation;
-pub mod order;
pub mod stage {
pub mod accept;
diff --git a/trade/src/listing/order.rs b/trade/src/listing/order.rs
@@ -19,19 +19,15 @@ pub struct TradeOrderItem {
#[cfg_attr(feature = "ts-rs", derive(TS))]
#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
-#[cfg_attr(feature = "serde", serde(rename_all = "snake_case", tag = "kind", content = "amount"))]
+#[cfg_attr(
+ feature = "serde",
+ serde(rename_all = "snake_case", tag = "kind", content = "amount")
+)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum TradeOrderChange {
- BinCount {
- item_index: u32,
- bin_count: u32,
- },
- ItemAdd {
- item: TradeOrderItem,
- },
- ItemRemove {
- item_index: u32,
- },
+ BinCount { item_index: u32, bin_count: u32 },
+ ItemAdd { item: TradeOrderItem },
+ ItemRemove { item_index: u32 },
}
#[cfg_attr(feature = "ts-rs", derive(TS))]
@@ -139,7 +135,10 @@ pub struct TradeDiscountOffer {
#[cfg_attr(feature = "ts-rs", derive(TS))]
#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
-#[cfg_attr(feature = "serde", serde(rename_all = "snake_case", tag = "kind", content = "amount"))]
+#[cfg_attr(
+ feature = "serde",
+ serde(rename_all = "snake_case", tag = "kind", content = "amount")
+)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum TradeDiscountDecision {
Accept {
@@ -155,7 +154,10 @@ pub enum TradeDiscountDecision {
#[cfg_attr(feature = "ts-rs", derive(TS))]
#[cfg_attr(feature = "ts-rs", ts(export, export_to = "types.ts"))]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
-#[cfg_attr(feature = "serde", serde(rename_all = "snake_case", tag = "kind", content = "amount"))]
+#[cfg_attr(
+ feature = "serde",
+ serde(rename_all = "snake_case", tag = "kind", content = "amount")
+)]
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum TradeFulfillmentStatus {
Preparing,
diff --git a/trade/src/listing/price_ext.rs b/trade/src/listing/price_ext.rs
@@ -106,10 +106,7 @@ mod tests {
),
price_per_canonical_unit: RadrootsCoreQuantityPrice::new(
RadrootsCoreMoney::new(RadrootsCoreDecimal::from(10u32), RadrootsCoreCurrency::USD),
- RadrootsCoreQuantity::new(
- RadrootsCoreDecimal::from(1u32),
- RadrootsCoreUnit::Each,
- ),
+ RadrootsCoreQuantity::new(RadrootsCoreDecimal::from(1u32), RadrootsCoreUnit::Each),
),
display_amount: None,
display_unit: None,
diff --git a/trade/src/listing/validation.rs b/trade/src/listing/validation.rs
@@ -3,7 +3,9 @@
#[cfg(not(feature = "std"))]
use alloc::{string::String, vec::Vec};
-use radroots_core::{RadrootsCoreDecimal, RadrootsCoreMoney, RadrootsCoreQuantity, RadrootsCoreUnit};
+use radroots_core::{
+ RadrootsCoreDecimal, RadrootsCoreMoney, RadrootsCoreQuantity, RadrootsCoreUnit,
+};
use radroots_events::{
RadrootsNostrEvent,
kinds::KIND_LISTING,
@@ -272,8 +274,8 @@ mod tests {
RadrootsNostrEvent,
kinds::KIND_LISTING,
listing::{
- RadrootsListing, RadrootsListingAvailability, RadrootsListingDeliveryMethod,
- RadrootsListingBin, RadrootsListingFarmRef, RadrootsListingLocation,
+ RadrootsListing, RadrootsListingAvailability, RadrootsListingBin,
+ RadrootsListingDeliveryMethod, RadrootsListingFarmRef, RadrootsListingLocation,
RadrootsListingProduct,
},
};