pub trait DSymPathExt {
    fn is_dsym_dir(&self) -> bool;
    fn resolve_dsym(&self) -> Option<PathBuf>;
    fn dsym_parent(&self) -> Option<&Path>;
}
Expand description

Extensions to Path for handling dSYM directories.

dSYM Files

dSYM files are actually folder structures that store debugging information on Apple platforms. They are also referred to as debug companion. At the core of this structure is a MachO file containing the actual debug information.

A full dSYM folder structure looks like this:

MyApp.dSYM
└── Contents
    ├── Info.plist
    └── Resources
        └── DWARF
            └── MyApp

Required Methods§

Returns true if this path points to an existing directory with a .dSYM extension.

Note that this does not check if a full dSYM structure is contained within this folder.

Examples
use std::path::Path;
use symbolic_common::DSymPathExt;

assert!(Path::new("Foo.dSYM").is_dsym_dir());
assert!(!Path::new("Foo").is_dsym_dir());

Resolves the path of the debug file in a dSYM directory structure.

Returns Some(path) if this path is a dSYM directory according to is_dsym_dir, and a file of the same name is located at Contents/Resources/DWARF/.

Examples
use std::path::Path;
use symbolic_common::DSymPathExt;

let path = Path::new("Foo.dSYM");
let dsym_path = path.resolve_dsym().unwrap();
assert_eq!(dsym_path, Path::new("Foo.dSYM/Contents/Resources/DWARF/Foo"));

Resolves the dSYM parent directory if this file is a dSYM.

If this path points to the MachO file in a dSYM directory structure, this function returns the path to the dSYM directory. Returns None if the parent does not exist or the file name does not match.

Examples
use std::path::Path;
use symbolic_common::DSymPathExt;

let path = Path::new("Foo.dSYM/Contents/Resources/DWARF/Foo");
let parent = path.dsym_parent().unwrap();
assert_eq!(parent, Path::new("Foo.dSYM"));

let path = Path::new("Foo.dSYM/Contents/Resources/DWARF/Bar");
assert_eq!(path.dsym_parent(), None);

Implementations on Foreign Types§

Implementors§