From f46d274c452ae14068e6ba47ddd64171cdfcf833 Mon Sep 17 00:00:00 2001 From: parrrate Date: Fri, 12 Sep 2025 18:33:53 +0000 Subject: [PATCH] generic vtable --- src/exercises/get_functions.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/exercises/get_functions.md b/src/exercises/get_functions.md index 9506494..42e72f3 100644 --- a/src/exercises/get_functions.md +++ b/src/exercises/get_functions.md @@ -8,18 +8,20 @@ struct Functions { increment: fn(i32) -> i32, } -fn get_functions() -> &'static Functions { +fn get_functions() -> &'static Functions { # /* let five = || 5; - let increment = |n| n + 1; + let increment = |n| n + STEP; let functions = Functions { five, increment }; &functions # */ -# &Functions { five: || 5, increment: |n| n + 1 } +# &Functions { five: || 5, increment: |n| n + STEP } } -assert_eq!((get_functions().five)(), 5); -assert_eq!((get_functions().increment)(4), 5); +assert_eq!((get_functions::<1>().five)(), 5); +assert_eq!((get_functions::<3>().five)(), 5); +assert_eq!((get_functions::<1>().increment)(4), 5); +assert_eq!((get_functions::<3>().increment)(4), 7); ``` Try solving it in the playground: @@ -30,15 +32,17 @@ struct Functions { increment: fn(i32) -> i32, } -fn get_functions() -> &'static Functions { +fn get_functions() -> &'static Functions { let five = || 5; - let increment = |n| n + 1; + let increment = |n| n + STEP; let functions = Functions { five, increment }; &functions } fn main() { - assert_eq!((get_functions().five)(), 5); - assert_eq!((get_functions().increment)(4), 5); + assert_eq!((get_functions::<1>().five)(), 5); + assert_eq!((get_functions::<3>().five)(), 5); + assert_eq!((get_functions::<1>().increment)(4), 5); + assert_eq!((get_functions::<3>().increment)(4), 7); } ```