diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-07-01 17:47:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-01 17:47:02 +0200 |
| commit | ff0a5f5ad79b1e2bdd76c14246ac0dd236ca5a12 (patch) | |
| tree | 0f5898c8adcb79b087ad196803633e5da6d2989f /tests/ui/generics | |
| parent | 1f881177b2897d81e3f453000985c198cb0ee583 (diff) | |
| parent | bf5910d9bb0c5cc3e4fb1a1a9ed3d73e26793c71 (diff) | |
| download | rust-ff0a5f5ad79b1e2bdd76c14246ac0dd236ca5a12.tar.gz rust-ff0a5f5ad79b1e2bdd76c14246ac0dd236ca5a12.zip | |
Rollup merge of #143210 - Kivooeo:tf19, r=tgross35
`tests/ui`: A New Order [19/N] > [!NOTE] > > Intermediate commits are intended to help review, but will be squashed prior to merge. Some `tests/ui/` housekeeping, to trim down number of tests directly under `tests/ui/`. Part of rust-lang/rust#133895. r? `@tgross35`
Diffstat (limited to 'tests/ui/generics')
| -rw-r--r-- | tests/ui/generics/newtype-with-generics.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/ui/generics/newtype-with-generics.rs b/tests/ui/generics/newtype-with-generics.rs new file mode 100644 index 00000000000..c5e200e4bc4 --- /dev/null +++ b/tests/ui/generics/newtype-with-generics.rs @@ -0,0 +1,32 @@ +//! Test newtype pattern with generic parameters. + +//@ run-pass + +#[derive(Clone)] +struct MyVec<T>(Vec<T>); + +fn extract_inner_vec<T: Clone>(wrapper: MyVec<T>) -> Vec<T> { + let MyVec(inner_vec) = wrapper; + inner_vec.clone() +} + +fn get_first_element<T>(wrapper: MyVec<T>) -> T { + let MyVec(inner_vec) = wrapper; + inner_vec.into_iter().next().unwrap() +} + +pub fn main() { + let my_vec = MyVec(vec![1, 2, 3]); + let cloned_vec = my_vec.clone(); + + // Test extracting inner vector + let extracted = extract_inner_vec(cloned_vec); + assert_eq!(extracted[1], 2); + + // Test getting first element + assert_eq!(get_first_element(my_vec.clone()), 1); + + // Test direct destructuring + let MyVec(inner) = my_vec; + assert_eq!(inner[2], 3); +} |
