Implementing Fn/FnMut/FnOnce would let you do this, but such impls are banned on stable Rust for now (due to unresolved questions like whether they should use hypothetical variadic generics). At least for Fn you can—but probably shouldn't—achieve something similar using the trick from this crate of dtolnay.
I would suggest just having an inherent method like this:
impl MyCallable {
// or &self, or &mut self
fn call(self, args: Args) -> Ret {
...
}
}
You're looking for the Fn, FnMut, or FnOnce traits (docs here). The semantics of these three traits are slightly different depending on how they borrow (or move) self.
I just remembered dtolnay has an in-depth explanation of the technique behind that crate here, which is good reading. (Again, I do not recommend applying this technique just to get slightly nicer custom callable types.)