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) + Send + Sync>,
    ) -> 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) + Send + Sync>, ) -> Result<SolveResult<Self::Scalar>, Error>

Solves with a progress callback.

Source

fn cancel(&self)

Cancels an ongoing solve operation.

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) + Send + Sync>, ) -> 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) + Send + Sync>, ) -> Result<SolveResult<f64>, Error>

Source§

fn cancel(&self)

Implementors§