#[non_exhaustive]pub enum Caching {
Nothing,
Loggers,
LoggersAndLevels,
}
Expand description
What the Logger
can cache.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Nothing
Disables caching.
Every time a log message passes the filters, the code goes to the Python side to check if the message shall be logged.
Loggers
Caches the Python Logger
objects.
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.
LoggersAndLevels
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.
Trait Implementations§
source§impl PartialEq for Caching
impl PartialEq for Caching
impl Copy for Caching
impl Eq for Caching
impl StructuralPartialEq for Caching
Auto Trait Implementations§
impl Freeze for Caching
impl RefUnwindSafe for Caching
impl Send for Caching
impl Sync for Caching
impl Unpin for Caching
impl UnwindSafe for Caching
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)