update: use cow not ref

pull/715/head
Addison Crump 2 years ago
parent d6bb3c46ed
commit 74ec52769c
No known key found for this signature in database
GPG Key ID: D495C2DF24C779B2

@ -1,7 +1,12 @@
//! A hash map of kernel or user space stack traces. //! A hash map of kernel or user space stack traces.
//! //!
//! See [`StackTraceMap`] for documentation and examples. //! See [`StackTraceMap`] for documentation and examples.
use std::{borrow::Borrow, fs, io, mem, path::Path, str::FromStr}; use std::{
borrow::{Borrow, Cow},
fs, io, mem,
path::Path,
str::FromStr,
};
use crate::{ use crate::{
maps::{IterableMap, MapData, MapError, MapIter, MapKeys}, maps::{IterableMap, MapData, MapError, MapIter, MapKeys},
@ -162,7 +167,7 @@ impl<'a, T: Borrow<MapData>> IntoIterator for &'a StackTraceMap<T> {
/// A resolver for symbols based on an address obtained from a stack trace. /// A resolver for symbols based on an address obtained from a stack trace.
pub trait SymbolResolver { pub trait SymbolResolver {
/// Resolve a symbol for a given address, if possible. /// Resolve a symbol for a given address, if possible.
fn resolve_symbol(&self, addr: u64) -> Option<&str>; fn resolve_symbol(&self, addr: u64) -> Option<Cow<'_, str>>;
} }
/// A kernel or user space stack trace. /// A kernel or user space stack trace.

@ -1,5 +1,6 @@
//! Utility functions. //! Utility functions.
use std::{ use std::{
borrow::Cow,
collections::BTreeMap, collections::BTreeMap,
error::Error, error::Error,
ffi::{CStr, CString}, ffi::{CStr, CString},
@ -206,8 +207,8 @@ fn parse_cpu_ranges(data: &str) -> Result<Vec<u32>, ()> {
pub type SimpleSymbolResolver = BTreeMap<u64, String>; pub type SimpleSymbolResolver = BTreeMap<u64, String>;
impl SymbolResolver for SimpleSymbolResolver { impl SymbolResolver for SimpleSymbolResolver {
fn resolve_symbol(&self, addr: u64) -> Option<&str> { fn resolve_symbol(&self, addr: u64) -> Option<Cow<'_, str>> {
self.range(..=addr).next_back().map(|(_, s)| s.as_str()) self.range(..=addr).next_back().map(|(_, s)| Cow::from(s))
} }
} }

@ -804,9 +804,9 @@ pub fn aya::maps::stack_trace::StackTraceMap<T>::borrow_mut(&mut self) -> &mut T
impl<T> core::convert::From<T> for aya::maps::stack_trace::StackTraceMap<T> impl<T> core::convert::From<T> for aya::maps::stack_trace::StackTraceMap<T>
pub fn aya::maps::stack_trace::StackTraceMap<T>::from(t: T) -> T pub fn aya::maps::stack_trace::StackTraceMap<T>::from(t: T) -> T
pub trait aya::maps::stack_trace::SymbolResolver pub trait aya::maps::stack_trace::SymbolResolver
pub fn aya::maps::stack_trace::SymbolResolver::resolve_symbol(&self, addr: u64) -> core::option::Option<&str> pub fn aya::maps::stack_trace::SymbolResolver::resolve_symbol(&self, addr: u64) -> core::option::Option<alloc::borrow::Cow<'_, str>>
impl aya::maps::stack_trace::SymbolResolver for aya::util::SimpleSymbolResolver impl aya::maps::stack_trace::SymbolResolver for aya::util::SimpleSymbolResolver
pub fn aya::util::SimpleSymbolResolver::resolve_symbol(&self, addr: u64) -> core::option::Option<&str> pub fn aya::util::SimpleSymbolResolver::resolve_symbol(&self, addr: u64) -> core::option::Option<alloc::borrow::Cow<'_, str>>
pub enum aya::maps::Map pub enum aya::maps::Map
pub aya::maps::Map::Array(aya::maps::MapData) pub aya::maps::Map::Array(aya::maps::MapData)
pub aya::maps::Map::BloomFilter(aya::maps::MapData) pub aya::maps::Map::BloomFilter(aya::maps::MapData)

Loading…
Cancel
Save