Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
The logger objects (which should stay the same during the lifetime of a Python application)
are cached. However, the log levels are not. This means there’s some amount of calling of
Python code saved during a logging call, but the GIL still needs to be acquired even if the
message doesn’t eventually get output anywhere.
Caches both the Python Logger and their respective effective log levels.
Therefore, once a Logger has been cached, it is possible to decide on the Rust side if a
message would get logged or not. If the message is not to be logged, no Python code is
called and the GIL doesn’t have to be acquired.