What does assign a generic in a trait?
What does assign a generic in a trait?
Maybe the question is not well written, but it's because I do not really know what's happening in here. I'm learning Rust, I'm doing pretty good, but this is the second time that stomp with this.
First, I thought that only the Add trait would be enough, but the LSP keep saying me this if I do not add the "restriction", as far as I know.
What I do not get is what <Output = T>
is. I know that is using the type T, but why it is assigned to Output?
The first time that I saw something similar was in the Rust book that comes with rustup, just look at the next function signature
Thank you for you help, you are awesome.
@capuccino You're not assigning anything. The Output = T is expressing a constraint. It's saying that the addition of T has to result in T again. A type can implement Add with any output type it wants.
@capuccino An alternative is to not use T: AddOutput = T, but to replace your usage of T, where it represents the output type, with T as Add::Output
I found it in the book. Is in advanced chapters, near the end, dang. Thank you for your time!
I see. How can I define my own constraints in traits? Maybe seeing how to, I can full understand what's happening behind
@capuccino
A trait can have an associated type. You write this "trait Foo { type Bar; }". Then, when you implement the trait, you have to specify this type, with "type Bar = Something;". This is different from the trait itself being generic, because there can only be a single associated type, so you can't implement the trait multiple times with different associated types.