I use unwrap a lot, and my most frequent target is unwrapping the result of Mutex::lock. Most applications have no reasonable way to recover from lock poisoning, so if I were forced to write a match for each such use site to handle the error case, the handler would have no choice but to just call panic anyway. Which is equivalent to unwrap, but much more verbose.
Perhaps it needs a scarier name, like "assume_ok".
I use locks a lot too, and I always return a Result from lock access. Sometimes an anyhow::Result, but still something to pass up to the caller.
This lets me do logging at minimum. Sometimes I can gracefully degrade. I try to be elegant in failure as possible, but not to the point where I wouldn't be able to detect errors or would enter a bad state.
That said, I am totally fine with your use case in your application. You're probably making sane choices for your problem. It should be on each organization to decide what the appropriate level of granularity is for each solution.
My worry is that this runtime panic behavior has unwittingly seeped into library code that is beyond our ability and scope to observe. Or that an organization sets a policy, but that the tools don't allow for rigid enforcement.
I guess because to most consumers, it doesn't actually matter. It uses matter and connects to a matter hub, the way it does it is an implementation detail unless you're making your own hub with homeassistant or something.
Even iPhones have been able to talk to thread devices directly for a while now, so it's a fairly transparent process.
I'd also argue that VS Code is not open source - at least not the version that 98% of people run. If you download VS Code from almost anywhere (and are not using Codium) then you are subject to the licence terms at https://code.visualstudio.com/license which says you may not:
- reverse engineer, decompile or disassemble the software, or otherwise attempt to derive the source code for the software except and solely to the extent required by third party licensing terms governing use of certain open source components that may be included in the software;
- remove, minimize, block or modify any notices of Microsoft or its suppliers in the software;
- use the software in any way that is against the law;
- share, publish, rent or lease the software, or provide the software as a stand-alone offering for others to use.
KDevelop's semantic highlighting where each variable was given its own colour was always the one I found most useful. It made tracking the meaning of some code much easier than just highlighting by token category.
reply