![]() ![]() So the only way to find out is to compile and then have the compiler tell you that it refuses to continue because there's an unused variable at line X. If you comment out a statement, you cannot know for sure how many unused variables this caused unless you visually scan the entire previous code, which can cost time. A C++ pre-processor macro can cause some nasty problems but it's not going to run a different compiler. Procedural macros present unlimited potential for exciting debugging because now you're essentially modifying the compiler at runtime. Which kind? I don't find debugging the declarative macros too hard, they are after all just expanding what you wrote according to some simple rules, and you can ask the compiler to show that expansion to you. ![]() > I also don't find debugging Rust macros that fun Unless the answer is "I have diagnostics and they are 100% effective" you're in the same situation. To be sure the fact the diagnostics aren't required does not forbid them from being provided, but it does mean you'd need to know whether you've been provided with such diagnostics and how effective they actually are. > If the author is fool enough to not use the language features that exist since C++17 to validate template code, surely. Neither of those goals are served by the existing Async-based ecosystem it occupies a spot in between. #2: Web application programming in Rust has a long way to go to get to the level of Django and Rails. #1: Rust excels at low-level programming ie it's one of a select group capable of this (Along with C, C++, ADA, and zig) My best guess is that a lot of people are using Rust for TCP and HTTP level web programming, eg servers, where spawning 100s or more IO-bound processes at once makes sense the area where Async shines. There are loads of Async TCP, HTTP etc libs, but nothing that can do anything lower than that! At that point, you're looking at perhaps `socket2`, and `smoltcp` the latter, of note, also works on embedded, and goes lower than TCP, despite its name. Of note re networking: My observation is that the Rust Async ecosystem only covers TCP and higher. There are efforts to use Async on embedded rust to abstract these, but it's not required. You do it using DMA, and interrupts, perhaps with static analysis etc. On embededded, you can write straightforward asynchronous code without using *Async*.
0 Comments
Leave a Reply.AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |