The problem is that call_closure(&mut self) could be called multiple times on the same a: Test<F> while the closure of type F: FnOnce() inside it can only be called once.
There’s multiple options how to proceed depending on what you want:
Make Test only support closures that can be called multiple times (so change both occurrences of FnOnce in your program to FnMut)
Make the field of Test an Option that can be set to None after the closure is first called. (For example like this.)