pub struct JsonLineOutput {
pub filename: String,
pub matches: Vec<JsonMatchResult>,
}Expand description
JSON Lines output structure with filename and matches
This structure is used for multi-file JSON output, where each line represents one file’s results. It includes the filename alongside the match results to provide context in a streaming format.
JSON Lines format is used when processing multiple files to provide immediate per-file output and clear filename association.
§Examples
use libmagic_rs::output::json::{JsonLineOutput, JsonMatchResult};
use std::path::PathBuf;
let matches = vec![
JsonMatchResult::new(
"ELF executable".to_string(),
0,
"7f454c46".to_string(),
vec!["executable".to_string()],
90
)
];
let output = JsonLineOutput::new("file.bin".to_string(), matches);
assert_eq!(output.filename, "file.bin");
assert_eq!(output.matches.len(), 1);Fields§
§filename: StringFilename or path of the analyzed file
matches: Vec<JsonMatchResult>Array of match results found during evaluation
Implementations§
Source§impl JsonLineOutput
impl JsonLineOutput
Sourcepub fn new(filename: String, matches: Vec<JsonMatchResult>) -> Self
pub fn new(filename: String, matches: Vec<JsonMatchResult>) -> Self
Create a new JSON Lines output structure
§Arguments
filename- The filename or path as a stringmatches- Vector of JSON match results
§Examples
use libmagic_rs::output::json::{JsonLineOutput, JsonMatchResult};
let matches = vec![
JsonMatchResult::new(
"Text file".to_string(),
0,
"48656c6c6f".to_string(),
vec!["text".to_string()],
60
)
];
let output = JsonLineOutput::new("test.txt".to_string(), matches);
assert_eq!(output.filename, "test.txt");
assert_eq!(output.matches.len(), 1);Sourcepub fn from_match_results(
filename: &Path,
match_results: &[MatchResult],
) -> Self
pub fn from_match_results( filename: &Path, match_results: &[MatchResult], ) -> Self
Create JSON Lines output from match results and filename
§Arguments
filename- Path to the analyzed filematch_results- Vector of match results to convert
§Examples
use libmagic_rs::output::{MatchResult, json::JsonLineOutput};
use libmagic_rs::parser::ast::Value;
use std::path::Path;
let match_results = vec![
MatchResult::with_metadata(
"Binary data".to_string(),
0,
4,
Value::Bytes(vec![0xde, 0xad, 0xbe, 0xef]),
vec!["binary".to_string()],
70,
None
)
];
let output = JsonLineOutput::from_match_results(Path::new("test.bin"), &match_results);
assert_eq!(output.filename, "test.bin");
assert_eq!(output.matches.len(), 1);Trait Implementations§
Source§impl Clone for JsonLineOutput
impl Clone for JsonLineOutput
Source§fn clone(&self) -> JsonLineOutput
fn clone(&self) -> JsonLineOutput
Returns a duplicate 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 Debug for JsonLineOutput
impl Debug for JsonLineOutput
Source§impl<'de> Deserialize<'de> for JsonLineOutput
impl<'de> Deserialize<'de> for JsonLineOutput
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for JsonLineOutput
impl RefUnwindSafe for JsonLineOutput
impl Send for JsonLineOutput
impl Sync for JsonLineOutput
impl Unpin for JsonLineOutput
impl UnwindSafe for JsonLineOutput
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