summaryrefslogtreecommitdiffstats
path: root/tests/ui/borrowck/issue-103095.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/ui/borrowck/issue-103095.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/ui/borrowck/issue-103095.rs b/tests/ui/borrowck/issue-103095.rs
new file mode 100644
index 000000000..0340f3924
--- /dev/null
+++ b/tests/ui/borrowck/issue-103095.rs
@@ -0,0 +1,30 @@
+// check-pass
+
+trait FnOnceForGenericRef<T>: FnOnce(&T) -> Self::FnOutput {
+ type FnOutput;
+}
+
+impl<T, R, F: FnOnce(&T) -> R> FnOnceForGenericRef<T> for F {
+ type FnOutput = R;
+}
+
+struct Data<T, D: FnOnceForGenericRef<T>> {
+ value: Option<T>,
+ output: Option<D::FnOutput>,
+}
+
+impl<T, D: FnOnceForGenericRef<T>> Data<T, D> {
+ fn new(value: T, f: D) -> Self {
+ let output = f(&value);
+ Self {
+ value: Some(value),
+ output: Some(output),
+ }
+ }
+}
+
+fn test() {
+ Data::new(String::new(), |_| {});
+}
+
+fn main() {}