Struct PwlCurve

Source
pub struct PwlCurve(/* private fields */);
Expand description

A representation of a piecewise-linear, weakly monotone decreasing demand curve

Demand curves define a bidder’s willingness to pay for different quantities of a good. In flow trading, these curves must be:

  • Piecewise-linear (defined by a sequence of points)
  • Weakly monotone decreasing (price non-increasing as rate increases)
  • Include the point rate=0 in their domain (must allow zero trade)

Unlike a ConstantCurve, all values (rates and prices) must be finite.

Implementations§

Source§

impl PwlCurve

Source

pub fn new(points: Vec<Point>) -> Result<Self, PwlCurveError>

Creates a new PwlCurve from a vector of points, validating all constraints

Source

pub unsafe fn new_unchecked(points: Vec<Point>) -> Self

Creates a new PwlCurve without validating the points

§Safety

This function bypasses all validation checks. The caller must guarantee that the points satisfy all requirements validated by PwlCurve::try_from. Using invalid points can lead to incorrect behavior in downstream systems, particularly in the solver which assumes valid monotone curves.

Source

pub fn domain(&self) -> (f64, f64)

Returns the domain of the demand curve (min and max rates)

§Returns

A tuple (min_rate, max_rate) where:

  • min_rate is the rate of the first point (leftmost)
  • max_rate is the rate of the last point (rightmost)
§Panics

Panics if the curve has no points (which should never happen for a valid curve).

Source

pub fn points(self) -> Vec<Point>

Converts the curve into its constituent points

This consumes the curve and returns the underlying vector of points. Useful for serialization or when the raw point data is needed.

Trait Implementations§

Source§

impl Clone for PwlCurve

Source§

fn clone(&self) -> PwlCurve

Returns a duplicate of the value. Read more
1.0.0 · Source§

const fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PwlCurve

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<PwlCurve> for DemandCurve

Source§

fn from(value: PwlCurve) -> Self

Converts to this type from the input type.
Source§

impl Into<PwlCurveDto> for PwlCurve

Source§

fn into(self) -> PwlCurveDto

Converts this type into the (usually inferred) input type.
Source§

impl TryFrom<PwlCurveDto> for PwlCurve

Source§

fn try_from(value: PwlCurveDto) -> Result<Self, Self::Error>

Attempts to create a PwlCurve from a DTO, validating all constraints

§Validation

This function validates that:

  1. The vector is not empty
  2. No coordinate values are NaN
  3. Points are ordered by ascending rate and descending price (monotonicity)
  4. The curve domain includes rate=0 (allows zero trade)
§Errors

Returns PwlCurveError if any validation fails.

Source§

type Error = PwlCurveError

The type returned in the event of a conversion error.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.