Conversation

val fun: Arg => Ret def fun(Arg): Ret when you don't have a function arrow (i.e. =>) then definitely I'd go with ->. but Scala has function arrow
2
tbh this is fine? because they're all supertraits and because lifetimes, ownership, and mutability matters, you can and indeed must specify the strictness of your trait bound, which lets you accept either all closures (FnOnce) or ones that are safe to call repeatedly (Fn).
1
1
Yeah I agree it works fine in Rust, yeah… but I think I'd want closures to be able to support other substructural properties beyond what Rust supports? And then you start getting more and more traits? But yeah I haven't thought it through carefully yet 😅
2
1
I'd say you'd want something more like: Fn [0..1] for FnOnce Fn [0..] for Fn Fn [0.., Unique] for FnMut (not sure about this one) This would also give you other stuff, like: Fn [1] for a closure that *must* be used
1
1
Show replies