Skip to main content

Solver

Trait Solver 

Source
pub trait Solver {
    type Geometry: Geometry;
    type Boundary: Boundary;
    type Scalar;

    // Required methods
    fn solve(
        &self,
        geometries: &[Self::Geometry],
        boundary: &Self::Boundary,
    ) -> Result<SolveResult<Self::Scalar>, Error>;
    fn solve_with_progress(
        &self,
        geometries: &[Self::Geometry],
        boundary: &Self::Boundary,
        callback: Box<dyn Fn(ProgressInfo) + Sync + Send>,
    ) -> Result<SolveResult<Self::Scalar>, Error>;
    fn cancel(&self);
}
Expand description

Trait for nesting/packing solvers.

Required Associated Types§

Source

type Geometry: Geometry

The geometry type this solver handles.

Source

type Boundary: Boundary

The boundary type this solver handles.

Source

type Scalar

The scalar type for coordinates.

Required Methods§

Source

fn solve( &self, geometries: &[Self::Geometry], boundary: &Self::Boundary, ) -> Result<SolveResult<Self::Scalar>, Error>

Solves the nesting/packing problem.

Source

fn solve_with_progress( &self, geometries: &[Self::Geometry], boundary: &Self::Boundary, callback: Box<dyn Fn(ProgressInfo) + Sync + Send>, ) -> Result<SolveResult<Self::Scalar>, Error>

Solves with a progress callback.

Source

fn cancel(&self)

Cancels an ongoing solve operation.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Solver for Nester2D

Source§

type Geometry = Geometry2D

Source§

type Boundary = Boundary2D

Source§

type Scalar = f64

Source§

fn solve( &self, geometries: &[<Nester2D as Solver>::Geometry], boundary: &<Nester2D as Solver>::Boundary, ) -> Result<SolveResult<f64>, Error>

Source§

fn solve_with_progress( &self, geometries: &[<Nester2D as Solver>::Geometry], boundary: &<Nester2D as Solver>::Boundary, callback: Box<dyn Fn(ProgressInfo) + Sync + Send>, ) -> Result<SolveResult<f64>, Error>

Source§

fn cancel(&self)

Source§

impl Solver for Packer3D

Source§

type Geometry = Geometry3D

Source§

type Boundary = Boundary3D

Source§

type Scalar = f64

Source§

fn solve( &self, geometries: &[<Packer3D as Solver>::Geometry], boundary: &<Packer3D as Solver>::Boundary, ) -> Result<SolveResult<f64>, Error>

Source§

fn solve_with_progress( &self, geometries: &[<Packer3D as Solver>::Geometry], boundary: &<Packer3D as Solver>::Boundary, callback: Box<dyn Fn(ProgressInfo) + Sync + Send>, ) -> Result<SolveResult<f64>, Error>

Source§

fn cancel(&self)

Implementors§