Enum proguard::ProguardRecord
source · pub enum ProguardRecord<'s> {
Header {
key: &'s str,
value: Option<&'s str>,
},
Class {
original: &'s str,
obfuscated: &'s str,
},
Field {
ty: &'s str,
original: &'s str,
obfuscated: &'s str,
},
Method {
ty: &'s str,
original: &'s str,
obfuscated: &'s str,
arguments: &'s str,
original_class: Option<&'s str>,
line_mapping: Option<LineMapping>,
},
}
Expand description
A Proguard Mapping Record.
Variants§
Header
A Proguard Header.
Fields
Class
A Class Mapping.
Fields
Field
A Field Mapping.
Fields
Method
A Method Mapping.
Fields
§
line_mapping: Option<LineMapping>
Optional line mapping of the method.
Implementations§
source§impl<'s> ProguardRecord<'s>
impl<'s> ProguardRecord<'s>
sourcepub fn try_parse(line: &'s [u8]) -> Result<Self, ParseError<'s>>
pub fn try_parse(line: &'s [u8]) -> Result<Self, ParseError<'s>>
Parses a line from a proguard mapping file.
§Examples
use proguard::ProguardRecord;
// Headers
let parsed = ProguardRecord::try_parse(b"# compiler: R8");
assert_eq!(
parsed,
Ok(ProguardRecord::Header {
key: "compiler",
value: Some("R8")
})
);
// Class Mappings
let parsed =
ProguardRecord::try_parse(b"android.arch.core.executor.ArchTaskExecutor -> a.a.a.a.c:");
assert_eq!(
parsed,
Ok(ProguardRecord::Class {
original: "android.arch.core.executor.ArchTaskExecutor",
obfuscated: "a.a.a.a.c"
})
);
// Field
let parsed = ProguardRecord::try_parse(
b" android.arch.core.executor.ArchTaskExecutor sInstance -> a",
);
assert_eq!(
parsed,
Ok(ProguardRecord::Field {
ty: "android.arch.core.executor.ArchTaskExecutor",
original: "sInstance",
obfuscated: "a",
})
);
// Method without line mappings
let parsed = ProguardRecord::try_parse(
b" java.lang.Object putIfAbsent(java.lang.Object,java.lang.Object) -> b",
);
assert_eq!(
parsed,
Ok(ProguardRecord::Method {
ty: "java.lang.Object",
original: "putIfAbsent",
obfuscated: "b",
arguments: "java.lang.Object,java.lang.Object",
original_class: None,
line_mapping: None,
})
);
// Inlined method from foreign class
let parsed = ProguardRecord::try_parse(
b" 1016:1016:void com.example1.domain.MyBean.doWork():16:16 -> buttonClicked",
);
assert_eq!(
parsed,
Ok(ProguardRecord::Method {
ty: "void",
original: "doWork",
obfuscated: "buttonClicked",
arguments: "",
original_class: Some("com.example1.domain.MyBean"),
line_mapping: Some(proguard::LineMapping {
startline: 1016,
endline: 1016,
original_startline: Some(16),
original_endline: Some(16),
}),
})
);
Trait Implementations§
source§impl<'s> Clone for ProguardRecord<'s>
impl<'s> Clone for ProguardRecord<'s>
source§fn clone(&self) -> ProguardRecord<'s>
fn clone(&self) -> ProguardRecord<'s>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<'s> Debug for ProguardRecord<'s>
impl<'s> Debug for ProguardRecord<'s>
source§impl<'s> PartialEq for ProguardRecord<'s>
impl<'s> PartialEq for ProguardRecord<'s>
source§fn eq(&self, other: &ProguardRecord<'s>) -> bool
fn eq(&self, other: &ProguardRecord<'s>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl<'s> StructuralPartialEq for ProguardRecord<'s>
Auto Trait Implementations§
impl<'s> Freeze for ProguardRecord<'s>
impl<'s> RefUnwindSafe for ProguardRecord<'s>
impl<'s> Send for ProguardRecord<'s>
impl<'s> Sync for ProguardRecord<'s>
impl<'s> Unpin for ProguardRecord<'s>
impl<'s> UnwindSafe for ProguardRecord<'s>
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
Mutably borrows from an owned value. Read more