mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-25 15:20:24 +01:00
[bindings] Drop the lifetime bound on Record
for bindings builds
Because log `Record`s are now being passed by ownership to `log`, the bindings get quite annoyed that there's a lifetime hanging around. We already don't use this lifetime in bindings (the `FormatArgs` is converted to a string and stored on the heap), so we can just drop the lifetime, even though it requires some macro'ing of the struct definition to do so.
This commit is contained in:
parent
76fff953bd
commit
e5c0c62c17
1 changed files with 11 additions and 11 deletions
|
@ -91,10 +91,12 @@ impl Level {
|
|||
}
|
||||
}
|
||||
|
||||
macro_rules! impl_record {
|
||||
($($args: lifetime)?, $($nonstruct_args: lifetime)?) => {
|
||||
/// A Record, unit of logging output with Metadata to enable filtering
|
||||
/// Module_path, file, line to inform on log's source
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Record<'a> {
|
||||
pub struct Record<$($args)?> {
|
||||
/// The verbosity level of the message.
|
||||
pub level: Level,
|
||||
/// The node id of the peer pertaining to the logged record.
|
||||
|
@ -118,22 +120,17 @@ pub struct Record<'a> {
|
|||
pub file: &'static str,
|
||||
/// The line containing the message.
|
||||
pub line: u32,
|
||||
|
||||
#[cfg(c_bindings)]
|
||||
/// We don't actually use the lifetime parameter in C bindings (as there is no good way to
|
||||
/// communicate a lifetime to a C, or worse, Java user).
|
||||
_phantom: core::marker::PhantomData<&'a ()>,
|
||||
}
|
||||
|
||||
impl<'a> Record<'a> {
|
||||
impl<$($args)?> Record<$($args)?> {
|
||||
/// Returns a new Record.
|
||||
///
|
||||
/// This is not exported to bindings users as fmt can't be used in C
|
||||
#[inline]
|
||||
pub fn new(
|
||||
pub fn new<$($nonstruct_args)?>(
|
||||
level: Level, peer_id: Option<PublicKey>, channel_id: Option<ChannelId>,
|
||||
args: fmt::Arguments<'a>, module_path: &'static str, file: &'static str, line: u32
|
||||
) -> Record<'a> {
|
||||
) -> Record<$($args)?> {
|
||||
Record {
|
||||
level,
|
||||
peer_id,
|
||||
|
@ -145,11 +142,14 @@ impl<'a> Record<'a> {
|
|||
module_path,
|
||||
file,
|
||||
line,
|
||||
}
|
||||
}
|
||||
}
|
||||
} }
|
||||
#[cfg(not(c_bindings))]
|
||||
impl_record!('a, );
|
||||
#[cfg(c_bindings)]
|
||||
_phantom: core::marker::PhantomData,
|
||||
}
|
||||
}
|
||||
}
|
||||
impl_record!(, 'a);
|
||||
|
||||
/// A trait encapsulating the operations required of a logger.
|
||||
pub trait Logger {
|
||||
|
|
Loading…
Add table
Reference in a new issue