pub fn get_exchange_rate(
from_currency: Ustr,
to_currency: Ustr,
price_type: PriceType,
quotes_bid: AHashMap<Ustr, Decimal>,
quotes_ask: AHashMap<Ustr, Decimal>,
) -> Result<Option<Decimal>>Expand description
Calculates the exchange rate between two currencies using provided bid and ask quotes.
This function builds a graph of direct conversion rates from the quotes and uses a DFS to accumulate the conversion rate along a valid conversion path. While a full Floyd-Warshall algorithm could compute all-pairs conversion rates, the DFS approach here provides a quick solution for a single conversion query.
ยงErrors
For conversions between distinct currencies (an identical from_currency and to_currency
returns a rate of one without inspecting the quotes), returns an error if:
quotes_bidorquotes_askis empty.quotes_bidandquotes_asklengths are not equal.price_typeis equal toLastorMark(cannot calculate from quotes).- The bid or ask side of a pair is missing.