]> git.lizzy.rs Git - rust.git/commit
Merge #3263
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>
Sat, 22 Feb 2020 12:31:30 +0000 (12:31 +0000)
committerGitHub <noreply@github.com>
Sat, 22 Feb 2020 12:31:30 +0000 (12:31 +0000)
commit2cbe8a4c4be2a69b27c248ab96341c2336f983cd
treeee1a32b47f889ed132a314286cd90a07f3700216
parent7836720f2e9a7fa01ae09ff9d51413ecd5877139
parent5a6e770f99d1549432c1e8a1abb1aada09ad2590
Merge #3263

3263: Implement unsizing coercions using Chalk r=matklad a=flodiebold

These are coercions like `&[T; n] -> &[T]`, which are handled by the `Unsize` and `CoerceUnsized` traits. The impls for `Unsize` are all built in to the compiler and require special handling, so we need to provide them to Chalk.

This adds the following `Unsize` impls:
 - `Unsize<[T]> for [T; _]`
 - `Unsize<dyn Trait> for T where T: Trait`
 - `Unsize<dyn SuperTrait> for dyn SubTrait`

Hence we are still missing the 'unsizing the last field of a generic struct' case.

Co-authored-by: Florian Diebold <florian.diebold@freiheit.com>
Co-authored-by: Florian Diebold <flodiebold@gmail.com>