# shrinkage::ProximalGradient

Shrinkage for Rust · 0.3.0

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

```rust
pub struct ProximalGradient<V = Vec<f64>>
```

Proximal gradient with backtracking for convex smooth predictor losses and complete convex proximal penalties. 

`V` is the design backend's owned vector: `faer::Col<f64>`, `nalgebra::DVector<f64>`, `ndarray::Array1<f64>`, or `Vec<f64>` for sprs. No normalized design or Gram matrix is formed. LazyMatrix centers dense products before accumulation. Its generic scaled forward product still clones the input when the backend does not specialize normalization. [`crate::MultivariateGaussian`](<7fdf5e23960fc73db0e87f24ddb2a99c31ff7cb273565e92aaae35a4fcc0bf0a>) with [`crate::AxisPenalty`](<08140b02568bb11bf1bb6237342dadbfb2c025ac93d35b1a67ee6c91fa412ca3>) fits joint matrix coefficients and response-specific unpenalized intercepts through the same iteration, returning [`crate::MultivariateFit`](<1fc706bb69ccb94d99ec29e41874bd0b6e5fcd1e3c66636a28146c58f6fd8c28>). 

```rust
use faer::{Col, Mat};
use shrinkage::{Gaussian, Problem, ProximalGradient, Ridge};
let x = Mat::from_fn(3, 1, |i, _| i as f64);
let y = [1.0, 3.0, 5.0];
let fit = Problem::new(&x, Gaussian::new(&y), Ridge::new(0.1))
    .fit_with(&ProximalGradient::<Col<f64>>::new())?;
let predictions = fit.predict(&x)?;
```

<a id="impl-feaffed1a715fb24b4dd50069f4d16e00f2e691ec9abf7e419649b8933238fda"></a>

## Inherent implementation

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem/runtime.rs>)

```rust
impl shrinkage::ProximalGradient<Vec<f64>>
```

<a id="method-solve_runtime_path-feaffed1a715fb24b4dd50069f4d16e00f2e691ec9abf7e419649b8933238fda"></a>

### `solve_runtime_path`

```rust
pub fn solve_runtime_path(
    &self,
    problem: &RuntimeProblem<'_>,
    penalties: &[Box<dyn ProximalPenalty + '_>]
) -> Result<Vec<ProximalFit>, FitError<BackendError>>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem/runtime.rs>)

Fit runtime-selected penalties in order with one prepared design. 

Reuses native products and iteration storage and warms each point from the preceding optimization-scale parameters. The problem's penalty is replaced by the path entries. Steps and iteration budgets reset at each point; iteration-limit fits are retained as warm starts. 

<a id="method-solve_runtime_path-feaffed1a715fb24b4dd50069f4d16e00f2e691ec9abf7e419649b8933238fda-documentation-errors"></a>

#### Errors

Returns validation or fitting errors without a partial path. 

<a id="impl-0669fe86812d7dce477024bcdfc93546923cc473b626bb35ed3e99bf3df2eaea"></a>

## Inherent implementation

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

```rust
impl<V> ProximalGradient<V>
```

<a id="method-initial_step-0669fe86812d7dce477024bcdfc93546923cc473b626bb35ed3e99bf3df2eaea"></a>

### `initial_step`

```rust
pub fn initial_step(self, step: f64) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

Set a finite positive initial step, halved until the smooth loss obeys its quadratic upper bound. Accepted steps are retained across iterations. 

<a id="method-max_backtracks-0669fe86812d7dce477024bcdfc93546923cc473b626bb35ed3e99bf3df2eaea"></a>

### `max_backtracks`

```rust
pub fn max_backtracks(self, count: usize) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

Set the maximum number of step halvings for each line search. 

<a id="method-max_iterations-0669fe86812d7dce477024bcdfc93546923cc473b626bb35ed3e99bf3df2eaea"></a>

### `max_iterations`

```rust
pub fn max_iterations(self, count: usize) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

Set the maximum number of accepted proximal updates. 

<a id="method-new-0669fe86812d7dce477024bcdfc93546923cc473b626bb35ed3e99bf3df2eaea"></a>

### `new`

```rust
pub fn new() -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

Use an absolute mapping tolerance of `1e-6`, 10,000 iterations, initial step one, and at most 100 step halvings per iteration. 

<a id="method-screening-0669fe86812d7dce477024bcdfc93546923cc473b626bb35ed3e99bf3df2eaea"></a>

### `screening`

```rust
pub fn screening(self, enabled: bool) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

Enable dynamic Gap Safe zero screening when every component supports it. 

Enabled by default. Certificates use the original loss and penalty; unsupported compositions retain ordinary proximal-gradient fitting. 

<a id="method-solve_path-0669fe86812d7dce477024bcdfc93546923cc473b626bb35ed3e99bf3df2eaea"></a>

### `solve_path`

```rust
pub fn solve_path<M, D, P, Q>(
    &self,
    problem: &Problem<&M, D, P>,
    penalties: &[Q]
) -> Result<Vec<ProximalFit>, FitError<<M as >::Error>> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, D: SmoothDatafit, Q: ProximalPenalty, V: ProximalVector
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

Fit penalties in the supplied order, preparing the design once. 

The problem's penalty is replaced by each path entry. Native product buffers and iteration storage are reused; each point starts from the preceding optimization-scale coefficients and intercept. Each point resets its step and iteration budget. Results own independent parameters and preprocessing. An empty path returns no fits. 

<a id="method-solve_path-0669fe86812d7dce477024bcdfc93546923cc473b626bb35ed3e99bf3df2eaea-documentation-errors"></a>

#### Errors

Returns validation, component, line-search, or backend errors without returning a partial path. Iteration-limit results remain in the path and provide the next warm start. 

<a id="method-terminate_on-0669fe86812d7dce477024bcdfc93546923cc473b626bb35ed3e99bf3df2eaea"></a>

### `terminate_on`

```rust
pub fn terminate_on(self, criterion: StoppingCriterion) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

Select a criterion. This solver supports proximal-gradient mapping only. 

<a id="method-tolerance-0669fe86812d7dce477024bcdfc93546923cc473b626bb35ed3e99bf3df2eaea"></a>

### `tolerance`

```rust
pub fn tolerance(self, absolute: f64) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

Set the absolute infinity-norm proximal-gradient mapping tolerance. 

<a id="impl-5afea244580021ef993c3201f514dc6d482fa949249a77c83a38625e6a7bb7bc"></a>

## Implementation of Clone

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

```rust
impl<V: core::clone::Clone> Clone for ProximalGradient<V>
```

<a id="method-clone-5afea244580021ef993c3201f514dc6d482fa949249a77c83a38625e6a7bb7bc"></a>

### `clone`

```rust
fn clone(&self) -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

<a id="impl-55f88d7947d39d3256f060abdc107ad3bc6c727dc18713e3d764c20e89e6bff6"></a>

## Implementation of Copy

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

```rust
impl<V: core::marker::Copy> Copy for ProximalGradient<V>
```

<a id="impl-ad584afbf84d802ae29fef0ab527058278a87c61868ced4990e3e375500b1f8a"></a>

## Implementation of Debug

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

```rust
impl<V: core::fmt::Debug> Debug for ProximalGradient<V>
```

<a id="method-fmt-ad584afbf84d802ae29fef0ab527058278a87c61868ced4990e3e375500b1f8a"></a>

### `fmt`

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

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

<a id="impl-84ff23560fb78a501227a6a74f367a5bd18fa8177faab97b531f8b6a91f5b375"></a>

## Implementation of Default

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

```rust
impl<V> Default for ProximalGradient<V>
```

<a id="method-default-84ff23560fb78a501227a6a74f367a5bd18fa8177faab97b531f8b6a91f5b375"></a>

### `default`

```rust
fn default() -> Self
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

<a id="impl-a1a1e361bdf7eb80ff4cfa2f4e0ad65dc55e057a1748c92d4bbc47fcff608d8e"></a>

## [Implementation of ObservedSolver](<a6f9ede80f6a0ee77f85e776916acea8bcaa0a49156d6cf183b3c41ae61db21a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

```rust
impl<M, D, P, V> ObservedSolver<Problem<&M, D, P>> for ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, D: SmoothDatafit, P: ProximalPenalty, V: ProximalVector
```

<a id="impl-a2c6b51c6160ceb48d129757607fbcba877a435edc67db1b9304e4b33fd207d5"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

```rust
impl<D, P, Q> PathSolver<Problem<Box<dyn RuntimeDesign + '_>, D, P>, Q> for shrinkage::ProximalGradient<Vec<f64>> where D: SmoothDatafit, Q: ProximalPenalty
```

<a id="impl-cc241d74572d7f8ed750e4afc6667076aa08a67e65c7e2abd4bc59d67bf51964"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

```rust
impl<M, D, P, Q, V> PathSolver<Problem<&M, D, P>, Q> for shrinkage::ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, D: SmoothDatafit, Q: ProximalPenalty, V: ProximalVector
```

<a id="impl-2c922a1b51f8422cde6974ec1686ccc2a939cb9ba607b129f0f6e9b60eeff887"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<M, P, Q, V> PathSolver<Problem<&M, MultivariateGaussian<'_>, AxisPenalty<P>>, AxisPenalty<Q>> for shrinkage::ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, Q: ProximalPenalty, V: ProximalVector
```

<a id="impl-a88a53fec270ad545d10fad8f9dbca4187b6983bb37f8941c2ccbea9f2fd1fc7"></a>

## [Implementation of PathSolver](<f5c72d3e4429c416ab6028c635ab099e02363494611b3296ed38741c10c0f4cf>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<P, Q: ProximalPenalty> PathSolver<Problem<Box<dyn RuntimeDesign + '_>, MultivariateGaussian<'_>, AxisPenalty<P>>, AxisPenalty<Q>> for shrinkage::ProximalGradient<Vec<f64>>
```

<a id="impl-32a64d52ee34a7abe920b4ed995b34c792e8c506453b8a623459de03d73cf787"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

```rust
impl<D, P> RegularizationPathSolver<Problem<Box<dyn RuntimeDesign + '_>, D, P>> for shrinkage::ProximalGradient<Vec<f64>> where D: SmoothDatafit + NullModelDatafit, P: PathPenalty
```

<a id="impl-6912f6d03a448f8e91dd34c41e916d2ac936473a8b9ebcac1f64b8defdd95bd5"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/path/proximal.rs>)

```rust
impl<M, D, P, V> RegularizationPathSolver<Problem<&M, D, P>> for shrinkage::ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, D: SmoothDatafit + NullModelDatafit, P: PathPenalty, V: ProximalVector
```

<a id="impl-17242b767fb81eb76f8498745860b715f63de6bd51a5bbff0aef85f305210067"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<M, P, V> RegularizationPathSolver<Problem<&M, MultivariateGaussian<'_>, AxisPenalty<P>>> for shrinkage::ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, P: PathPenalty, V: ProximalVector
```

<a id="impl-4b68676d80c989180bb8893287beba62ca318509b3cf069d7e8e191d32a1e7c0"></a>

## [Implementation of RegularizationPathSolver](<f0683a430ead6c2ec6bb1d72ad941d17f0612d3092504128df751d377350193c>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<P: PathPenalty> RegularizationPathSolver<Problem<Box<dyn RuntimeDesign + '_>, MultivariateGaussian<'_>, AxisPenalty<P>>> for shrinkage::ProximalGradient<Vec<f64>>
```

<a id="impl-988bd5ef1eb00d670a89ec9d87f9bff36a3d8b4768e2a6d4e03b41db330c5bb8"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/problem/runtime.rs>)

```rust
impl<D: SmoothDatafit, P: ProximalPenalty> Solver<Problem<Box<dyn RuntimeDesign + '_>, D, P>> for shrinkage::ProximalGradient<Vec<f64>>
```

<a id="impl-c98a93b565b3bf7dfb8820d3072809c32b7976f967a0a29deed1a3ced2f92da6"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal.rs>)

```rust
impl<M, D, P, V> Solver<Problem<&M, D, P>> for ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, D: SmoothDatafit, P: ProximalPenalty, V: ProximalVector
```

<a id="impl-72736c4fbabe0cadc9050a6a123310797549b5e3b3281cd67d3f1b499d2ae697"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<M, P, V> Solver<Problem<&M, MultivariateGaussian<'_>, AxisPenalty<P>>> for shrinkage::ProximalGradient<V> where M: RawColumns<f64> + ColumnStats<f64> + MatVecInto<V> + MatTransposeVecInto<V> + ?Sized, P: ProximalPenalty, V: ProximalVector
```

<a id="impl-33820495b1364e800232fe3f3457f212e074b7b2b484d840ffaeff451bac8983"></a>

## [Implementation of Solver](<f80ebf14b213d3129f84bb1ccc4912d7d7123fed16e872d24da1a9f5ef741b0a>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/solver/proximal/multivariate.rs>)

```rust
impl<P: ProximalPenalty> Solver<Problem<Box<dyn RuntimeDesign + '_>, MultivariateGaussian<'_>, AxisPenalty<P>>> for shrinkage::ProximalGradient<Vec<f64>>
```

<a id="impl-e7b60149b72160e19f7ef637c09c0e1980eee749c16b44934305dd41e5b3ba4c"></a>

## Implementation of Freeze

```rust
impl<V> Freeze for ProximalGradient<V> where PhantomData<V>: Freeze
```

<a id="impl-62254818529e254148e55e23cea6a5d3174c2033e934c205317719b7240d2aaf"></a>

## Implementation of RefUnwindSafe

```rust
impl<V> RefUnwindSafe for ProximalGradient<V> where PhantomData<V>: RefUnwindSafe
```

<a id="impl-3f107d816fe44c29e93c0bc2f15e8c794932ff2696a50acd0b35e516faa90fdd"></a>

## Implementation of Send

```rust
impl<V> Send for ProximalGradient<V> where PhantomData<V>: Send
```

<a id="impl-14aa135d4291042bed8468a32aa440cf5fe742828cdebdfcba2ec9b5b7c195b8"></a>

## Implementation of Sync

```rust
impl<V> Sync for ProximalGradient<V> where PhantomData<V>: Sync
```

<a id="impl-36c4db50a2b0fdd8143a231e3b760e34ad8732500778fb3e821199b234e9792d"></a>

## Implementation of Unpin

```rust
impl<V> Unpin for ProximalGradient<V> where PhantomData<V>: Unpin
```

<a id="impl-707ddfc1a12cb54e3d583c18aae160bd9584dcfa314e0824ae374ea0fb58858f"></a>

## Implementation of UnsafeUnpin

```rust
impl<V> UnsafeUnpin for ProximalGradient<V> where PhantomData<V>: UnsafeUnpin
```

<a id="impl-f99ba7e78ccdf8cf4231cbce8cfa24d6e1d5c9ed43222469319ee98047b14761"></a>

## Implementation of UnwindSafe

```rust
impl<V> UnwindSafe for ProximalGradient<V> where PhantomData<V>: UnwindSafe
```

<a id="impl-1e5682dc18e03c648aa9b125290c107c1e8d96ce8a179a8532e4057da4daf0cd"></a>

## Implementation of Any

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

<a id="impl-6c0b25c2c92cdb117802d9c0a4c70afc9a8bfb0da875bc6e66191e2349fcdf3f"></a>

## Implementation of Borrow

```rust
impl<T> Borrow<T> for T where T: ?Sized
```

<a id="impl-796e80d926348273a22b04d8e84f510693b11c06ec57c3c3e2e8c1524094a85c"></a>

## Implementation of BorrowMut

```rust
impl<T> BorrowMut<T> for T where T: ?Sized
```

<a id="impl-8360e4092e7ec4a05a26dd304cd739398f0cacc50c8d08dd5be0223d1a08d02e"></a>

## Implementation of ByRef

```rust
impl<T> ByRef<T> for T
```

<a id="impl-dbb1293b7b5dd80c4d9a98cfdd6843dc7470224c0b1387731cd418da07046d7b"></a>

## Implementation of CastableFrom

```rust
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT where ST: ?Sized, DT: ?Sized
```

<a id="impl-97b65e7dfc44b5ecaa495a3a19fe737914a1e9f8532200cf8f46191314e7d777"></a>

## Implementation of CastableFrom

```rust
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT where ST: ?Sized, DT: ?Sized
```

<a id="impl-86d7da2bfd1140cc1675dfe6a975e6a2762338ab32731152da0723858ef3aa81"></a>

## Implementation of CloneToUninit

```rust
impl<T> CloneToUninit for T where T: Clone
```

<a id="impl-c22bdd3b1b677b66eb32d1c182cc1410c7f0c46491dd74e6a659647c238d19ec"></a>

## Implementation of From

```rust
impl<T> From<T> for T
```

<a id="impl-5adf6ca1830f30fbbac655ab8ff394d254954df7ededc7cc833c72fdc87d6f00"></a>

## Implementation of Imply

```rust
impl<T, U> Imply<T> for U where T: ?Sized, U: ?Sized
```

<a id="impl-85eec431edd188129f88290bbcb748e4d2fdc97f7efef3c162b8c252286ffec0"></a>

## Implementation of Into

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

<a id="impl-c40268dd59dd3329202d3c0544c62372e98ff3baa8ec442ec00752e024ec1d06"></a>

## Implementation of IntoEither

```rust
impl<T> IntoEither for T
```

<a id="impl-5655b1ef858b34a584cb80104f040c8a4063ced0d281311a0833ed12aefde86e"></a>

## Implementation of Pointable

```rust
impl<T> Pointable for T
```

<a id="impl-8cc2aa01198fc9fa44f08b889f62988d70d2a7f4f0f11f4666d4c08bdaddb22a"></a>

## Implementation of Read

```rust
impl<T> Read<Exclusive, BecauseExclusive> for T where T: ?Sized
```

<a id="impl-5ea09131039c62dd92b119d480a35c7e2b33d2b81dccf0b849f6b1f19f4bda24"></a>

## Implementation of Same

```rust
impl<T> Same for T
```

<a id="impl-7ee6ff38d6674f5edfe4734359062c2a67a572cff5899a89704764822b931c7f"></a>

## Implementation of SupersetOf

```rust
impl<SS, SP> SupersetOf<SS> for SP where SS: SubsetOf<SP>
```

<a id="impl-a8ef6e94191301c3685488478f4905086c47137bac2d606ea4d09631d5472b06"></a>

## Implementation of ToOwned

```rust
impl<T> ToOwned for T where T: Clone
```

<a id="impl-83960135d00d98080c95a08867729696e36811280c2dd9cf34c1b4fe21c81e18"></a>

## Implementation of TryFrom

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

<a id="impl-1cc495bcaa5112ffb304e7f0de674feca391fd97f47bec86033a9225b72ac05c"></a>

## Implementation of TryInto

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