# Trait SpSolver

```
pub trait SpSolver<E>: SpSolverCore<E>where
E: ComplexField,{
// Required methods
fn solve_in_place(&self, rhs: impl ColBatchMut<E>);
fn solve_conj_in_place(&self, rhs: impl ColBatchMut<E>);
fn solve_transpose_in_place(&self, rhs: impl ColBatchMut<E>);
fn solve_conj_transpose_in_place(&self, rhs: impl ColBatchMut<E>);
fn solve<ViewE, B>(&self, rhs: B) -> <B as ColBatch<ViewE>>::Owned
where ViewE: Conjugate<Canonical = E>,
B: ColBatch<ViewE>;
fn solve_conj<ViewE, B>(&self, rhs: B) -> <B as ColBatch<ViewE>>::Owned
where ViewE: Conjugate<Canonical = E>,
B: ColBatch<ViewE>;
fn solve_transpose<ViewE, B>(&self, rhs: B) -> <B as ColBatch<ViewE>>::Owned
where ViewE: Conjugate<Canonical = E>,
B: ColBatch<ViewE>;
fn solve_conj_transpose<ViewE, B>(
&self,
rhs: B,
) -> <B as ColBatch<ViewE>>::Owned
where ViewE: Conjugate<Canonical = E>,
B: ColBatch<ViewE>;
}
```

## Expand description

Solver that can compute solution of a linear system.

## Required Methods§

#### fn solve_in_place(&self, rhs: impl ColBatchMut<E>)

#### fn solve_in_place(&self, rhs: impl ColBatchMut<E>)

Solves the equation `self * X = rhs`

when self is square, and stores the result in `rhs`

.

#### fn solve_conj_in_place(&self, rhs: impl ColBatchMut<E>)

#### fn solve_conj_in_place(&self, rhs: impl ColBatchMut<E>)

Solves the equation `conjugate(self) * X = rhs`

when self is square, and stores the result
in `rhs`

.

#### fn solve_transpose_in_place(&self, rhs: impl ColBatchMut<E>)

#### fn solve_transpose_in_place(&self, rhs: impl ColBatchMut<E>)

Solves the equation `transpose(self) * X = rhs`

when self is square, and stores the result
in `rhs`

.

#### fn solve_conj_transpose_in_place(&self, rhs: impl ColBatchMut<E>)

#### fn solve_conj_transpose_in_place(&self, rhs: impl ColBatchMut<E>)

Solves the equation `adjoint(self) * X = rhs`

when self is square, and stores the result in
`rhs`

.

#### fn solve<ViewE, B>(&self, rhs: B) -> <B as ColBatch<ViewE>>::Owned

#### fn solve<ViewE, B>(&self, rhs: B) -> <B as ColBatch<ViewE>>::Owned

Solves the equation `self * X = rhs`

when self is square, and returns the result.

#### fn solve_conj<ViewE, B>(&self, rhs: B) -> <B as ColBatch<ViewE>>::Owned

#### fn solve_conj<ViewE, B>(&self, rhs: B) -> <B as ColBatch<ViewE>>::Owned

Solves the equation `conjugate(self) * X = rhs`

when self is square, and returns the result.

#### fn solve_transpose<ViewE, B>(&self, rhs: B) -> <B as ColBatch<ViewE>>::Owned

#### fn solve_transpose<ViewE, B>(&self, rhs: B) -> <B as ColBatch<ViewE>>::Owned

Solves the equation `transpose(self) * X = rhs`

when self is square, and returns the result.

#### fn solve_conj_transpose<ViewE, B>(
&self,
rhs: B,
) -> <B as ColBatch<ViewE>>::Owned

#### fn solve_conj_transpose<ViewE, B>( &self, rhs: B, ) -> <B as ColBatch<ViewE>>::Owned

Solves the equation `adjoint(self) * X = rhs`

when self is square, and returns the result.

## Dyn Compatibility§

This trait is **not** dyn compatible.

*In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.*