summaryrefslogtreecommitdiffstats
path: root/vendor/derive_more/tests/as_mut.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:21 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:21 +0000
commit4e8199b572f2035b7749cba276ece3a26630d23e (patch)
treef09feeed6a0fe39d027b1908aa63ea6b35e4b631 /vendor/derive_more/tests/as_mut.rs
parentAdding upstream version 1.66.0+dfsg1. (diff)
downloadrustc-4e8199b572f2035b7749cba276ece3a26630d23e.tar.xz
rustc-4e8199b572f2035b7749cba276ece3a26630d23e.zip
Adding upstream version 1.67.1+dfsg1.upstream/1.67.1+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/derive_more/tests/as_mut.rs')
-rw-r--r--vendor/derive_more/tests/as_mut.rs108
1 files changed, 108 insertions, 0 deletions
diff --git a/vendor/derive_more/tests/as_mut.rs b/vendor/derive_more/tests/as_mut.rs
new file mode 100644
index 000000000..e074f8b02
--- /dev/null
+++ b/vendor/derive_more/tests/as_mut.rs
@@ -0,0 +1,108 @@
+#![allow(dead_code)]
+
+#[macro_use]
+extern crate derive_more;
+
+use std::path::PathBuf;
+use std::ptr;
+
+#[derive(AsMut)]
+struct SingleFieldTuple(String);
+
+#[test]
+fn single_field_tuple() {
+ let mut item = SingleFieldTuple(String::from("test"));
+
+ assert!(ptr::eq(&mut item.0, item.as_mut()));
+}
+
+#[derive(AsMut)]
+#[as_mut(forward)]
+struct SingleFieldForward(Vec<i32>);
+
+#[test]
+fn single_field_forward() {
+ let mut item = SingleFieldForward(vec![]);
+ let _: &mut [i32] = (&mut item).as_mut();
+}
+
+#[derive(AsMut)]
+struct SingleFieldStruct {
+ first: String,
+}
+
+#[test]
+fn single_field_struct() {
+ let mut item = SingleFieldStruct {
+ first: String::from("test"),
+ };
+
+ assert!(ptr::eq(&mut item.first, item.as_mut()));
+}
+
+#[derive(AsMut)]
+struct MultiFieldTuple(#[as_mut] String, #[as_mut] PathBuf, Vec<usize>);
+
+#[test]
+fn multi_field_tuple() {
+ let mut item = MultiFieldTuple(String::from("test"), PathBuf::new(), vec![]);
+
+ assert!(ptr::eq(&mut item.0, item.as_mut()));
+ assert!(ptr::eq(&mut item.1, item.as_mut()));
+}
+
+#[derive(AsMut)]
+struct MultiFieldStruct {
+ #[as_mut]
+ first: String,
+ #[as_mut]
+ second: PathBuf,
+ third: Vec<usize>,
+}
+
+#[test]
+fn multi_field_struct() {
+ let mut item = MultiFieldStruct {
+ first: String::from("test"),
+ second: PathBuf::new(),
+ third: vec![],
+ };
+
+ assert!(ptr::eq(&mut item.first, item.as_mut()));
+ assert!(ptr::eq(&mut item.second, item.as_mut()));
+}
+
+#[derive(AsMut)]
+struct SingleFieldGenericStruct<T> {
+ first: T,
+}
+
+#[test]
+fn single_field_generic_struct() {
+ let mut item = SingleFieldGenericStruct {
+ first: String::from("test"),
+ };
+
+ assert!(ptr::eq(&mut item.first, item.as_mut()));
+}
+
+#[derive(AsMut)]
+struct MultiFieldGenericStruct<T> {
+ #[as_mut]
+ first: Vec<T>,
+ #[as_mut]
+ second: PathBuf,
+ third: Vec<usize>,
+}
+
+#[test]
+fn multi_field_generic_struct() {
+ let mut item = MultiFieldGenericStruct {
+ first: b"test".to_vec(),
+ second: PathBuf::new(),
+ third: vec![],
+ };
+
+ assert!(ptr::eq(&mut item.first, item.as_mut()));
+ assert!(ptr::eq(&mut item.second, item.as_mut()));
+}