| //! Test basic closure syntax and usage with generic functions. |
| //! |
| //! This test checks that closure syntax works correctly for: |
| //! - Closures with parameters and return values |
| //! - Closures without parameters (both expression and block forms) |
| //! - Integration with generic functions and FnOnce trait bounds |
| |
| //@ run-pass |
| |
| fn f<F>(i: isize, f: F) -> isize |
| where |
| F: FnOnce(isize) -> isize, |
| { |
| f(i) |
| } |
| |
| fn g<G>(_g: G) |
| where |
| G: FnOnce(), |
| { |
| } |
| |
| pub fn main() { |
| // Closure with parameter that returns the same value |
| assert_eq!(f(10, |a| a), 10); |
| |
| // Closure without parameters - expression form |
| g(|| ()); |
| |
| // Test closure reuse in generic context |
| assert_eq!(f(10, |a| a), 10); |
| |
| // Closure without parameters - block form |
| g(|| {}); |
| } |