diff --git a/crates/rune-alloc/src/macros.rs b/crates/rune-alloc/src/macros.rs
index 0800463c3..18a6697d8 100644
--- a/crates/rune-alloc/src/macros.rs
+++ b/crates/rune-alloc/src/macros.rs
@@ -62,17 +62,29 @@ macro_rules! repeat_macro {
$macro!(2, A a 0, B b 1);
$macro!(3, A a 0, B b 1, C c 2);
$macro!(4, A a 0, B b 1, C c 2, D d 3);
+ #[cfg(not(test))]
$macro!(5, A a 0, B b 1, C c 2, D d 3, E e 4);
+ #[cfg(not(test))]
$macro!(6, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5);
+ #[cfg(not(test))]
$macro!(7, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6);
+ #[cfg(not(test))]
$macro!(8, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7);
+ #[cfg(not(test))]
$macro!(9, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8);
+ #[cfg(not(test))]
$macro!(10, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9);
+ #[cfg(not(test))]
$macro!(11, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10);
+ #[cfg(not(test))]
$macro!(12, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10, L l 11);
+ #[cfg(not(test))]
$macro!(13, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10, L l 11, M m 12);
+ #[cfg(not(test))]
$macro!(14, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10, L l 11, M m 12, N n 13);
+ #[cfg(not(test))]
$macro!(15, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10, L l 11, M m 12, N n 13, O o 14);
+ #[cfg(not(test))]
$macro!(16, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10, L l 11, M m 12, N n 13, O o 14, P p 15);
};
}
diff --git a/crates/rune/src/internal_macros.rs b/crates/rune/src/internal_macros.rs
index 53c65f490..ec84691fc 100644
--- a/crates/rune/src/internal_macros.rs
+++ b/crates/rune/src/internal_macros.rs
@@ -44,17 +44,29 @@ macro_rules! repeat_macro {
$macro!(2, A a 0, B b 1);
$macro!(3, A a 0, B b 1, C c 2);
$macro!(4, A a 0, B b 1, C c 2, D d 3);
+ #[cfg(not(test))]
$macro!(5, A a 0, B b 1, C c 2, D d 3, E e 4);
+ #[cfg(not(test))]
$macro!(6, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5);
+ #[cfg(not(test))]
$macro!(7, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6);
+ #[cfg(not(test))]
$macro!(8, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7);
+ #[cfg(not(test))]
$macro!(9, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8);
+ #[cfg(not(test))]
$macro!(10, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9);
+ #[cfg(not(test))]
$macro!(11, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10);
+ #[cfg(not(test))]
$macro!(12, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10, L l 11);
+ #[cfg(not(test))]
$macro!(13, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10, L l 11, M m 12);
+ #[cfg(not(test))]
$macro!(14, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10, L l 11, M m 12, N n 13);
+ #[cfg(not(test))]
$macro!(15, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10, L l 11, M m 12, N n 13, O o 14);
+ #[cfg(not(test))]
$macro!(16, A a 0, B b 1, C c 2, D d 3, E e 4, F f 5, G g 6, H h 7, I i 8, J j 9, K k 10, L l 11, M m 12, N n 13, O o 14, P p 15);
};
}
diff --git a/crates/rune/src/module/function_traits/macros.rs b/crates/rune/src/module/function_traits/macros.rs
index 400287825..1c079bb6b 100644
--- a/crates/rune/src/module/function_traits/macros.rs
+++ b/crates/rune/src/module/function_traits/macros.rs
@@ -1,369 +1,612 @@
-// Note: Automatically generated using functions_traits_permute.py
-macro_rules! permute {
- ($call:path) => {
- $call!(0);
- $call!(1, {A, a, A, 0, {}, {FromValue}, from_value});
- $call!(1, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(1, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(2, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value});
- $call!(2, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(2, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(2, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value});
- $call!(2, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(2, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(2, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value});
- $call!(2, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(2, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(3, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value});
- $call!(3, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(3, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(3, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value});
- $call!(3, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(3, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(3, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value});
- $call!(3, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(3, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(3, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value});
- $call!(3, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(3, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(3, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value});
- $call!(3, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(3, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(3, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value});
- $call!(3, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(3, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(3, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value});
- $call!(3, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(3, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(3, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value});
- $call!(3, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(3, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(3, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value});
- $call!(3, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(3, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, A, 0, {}, {FromValue}, from_value}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Ref, 0, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, B, 1, {}, {FromValue}, from_value}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Ref, 2, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Ref, 1, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref}, {C, c, Mut, 2, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {D, d, Mut, 3, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, D, 3, {}, {FromValue}, from_value});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Ref, 3, {&}, {?Sized + UnsafeToRef}, unsafe_to_ref});
- $call!(4, {A, a, Mut, 0, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {B, b, Mut, 1, {&mut}, {?Sized + UnsafeToMut}, unsafe_to_mut}, {C, c, C, 2, {}, {FromValue}, from_value}, {D, d, Mut