5 ms·
Will C++ ever get the possibility to just print the contents of an object like Rust does (with the automatic debug trait)? I am tired of writing my own print fu
by ruph123 3y ago
Will C++ ever get the possibility to just print the contents of an object like Rust does (with the automatic debug trait)?
I am tired of writing my own print functions for random objects when debugging because the API developers did not bother to override the <<operator. One of those things that are hard to accept when coming back from Rust.
- i-use-nixos-btw 3y agoNot until we get reflection. And reflection efforts seem to be at an impasse, so I don’t imagine we will see it for a few years at least. I will add, though, that I’ve found copilot to be very handy when it comes to generating formatting. Last week I used it while writing fmt::formatter specialisations for a library with 50 structs, some having over 20 members. Writing all of them took about 10 minutes. I dare say the same would hold for operator<< overloads.
- ComputerGuru 3y agoRust does not use reflection for this. Reflection support in rust isn’t actually much better than in C++.
- i-use-nixos-btw 3y agoI’m not a rust dev, but looking into how the Debug trait works, it’s basically what we’d need compile time reflection to get in C++. It generates code that uses the class name and class members. In C++ we have no way of doing that (without hacky macro stuff).
- vvanders 3y agoThe fact that Rust also has a pretty-print("{:#}")[1] a single character away is also really convenient. When you're working with JSON or debug printing types it's nice to be able to format that without reaching for external tools. [1] https://doc.rust-lang.org/std/fmt/ https://doc.rust-lang.org/std/fmt/
- deleted 3y ago[deleted]
- shilangyu 3y ago> I am tired of writing my own print functions for random objects when debugging because the API developers did not bother to override the <<operator. Won't you face the same problem in Rust? If the library developer did not derive the Debug trait, you're out of luck.