digitalmars.D.learn - There is anything like nodiscard attribute in D?
- victoroak (6/6) Jul 29 2019 I have an Expected/Result struct, but without an attribute
- Jonathan M Davis (18/24) Jul 29 2019 No, D does not currently have a feature like that, and there are not
I have an Expected/Result struct, but without an attribute similar to nodiscard (https://en.cppreference.com/w/cpp/language/attributes/nodiscard) is not very useful. There is anything like that in D? If not, there is any plan to add it?
Jul 29 2019
On Monday, July 29, 2019 8:23:43 AM MDT victoroak via Digitalmars-d-learn wrote:I have an Expected/Result struct, but without an attribute similar to nodiscard (https://en.cppreference.com/w/cpp/language/attributes/nodiscard) is not very useful. There is anything like that in D? If not, there is any plan to add it?No, D does not currently have a feature like that, and there are not currently any plans to add such a feature. If someone writes a DIP (D Improvement Proposal) for such a feature and provides good enough arguments for why it's worth adding that the DIP ends up being accepted, then such a feature would be added, but AFAIK, no one has written such a proposal. The closest that D has to such a feature is that if a function is pure, then IIRC in at lesat some cases, the compiler will warn if the return value is ignored, because there isn't normally any point to a pure function if you ignore everything that it does, but that probably requires that the function be "strongly" pure (meaning that all of its parameters are immutable or implicitly convertible to immutable), since if it's possible for any effects to escape via the function arguments (e.g. because they're pointers or ref), then ignoring the return value isn't necessarily a problem. However, that's the only time that D complains about a function's return value being ignored. - Jonathan M Davis
Jul 29 2019