about summary refs log tree commit diff
path: root/tests/ui/generics
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2025-07-01 17:47:02 +0200
committerGitHub <noreply@github.com>2025-07-01 17:47:02 +0200
commitff0a5f5ad79b1e2bdd76c14246ac0dd236ca5a12 (patch)
tree0f5898c8adcb79b087ad196803633e5da6d2989f /tests/ui/generics
parent1f881177b2897d81e3f453000985c198cb0ee583 (diff)
parentbf5910d9bb0c5cc3e4fb1a1a9ed3d73e26793c71 (diff)
downloadrust-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.rs32
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);
+}