Skip to content

Commit 8ddd234

Browse files
committed
fix: follow-up pyo3 API changes in module/function registration
1 parent 8b34609 commit 8ddd234

1 file changed

Lines changed: 20 additions & 22 deletions

File tree

src/lib.rs

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
1-
use pyo3::prelude::*;
21
use pyo3::exceptions;
3-
4-
2+
use pyo3::prelude::*;
53

64
// This defines a python module. pyo3 will copy the rust doc comment
75
// below into a python docstring
86

7+
/// Demangles a mangled c++ linker symbol name and returns it as a string
8+
#[pyfunction]
9+
fn demangle(mangled: String) -> PyResult<String> {
10+
let symbol = ::cpp_demangle::Symbol::new(&mangled[..]).map_err(|error| {
11+
exceptions::PyValueError::new_err(("Could not demangle symbol", error.to_string()))
12+
})?;
13+
let demangled = symbol.demangle(&Default::default()).map_err(|error| {
14+
exceptions::PyValueError::new_err((
15+
"Could not format demangled name as string",
16+
error.to_string(),
17+
))
18+
})?;
19+
20+
Ok(demangled)
21+
}
22+
923
/// A package for demangling C++ linker symbols
1024
///
1125
/// This package provides python bindings for the rust crate
@@ -24,23 +38,7 @@ use pyo3::exceptions;
2438
/// ...
2539
/// ValueError: ('Could not demangle symbol', 'mangled symbol is not well-formed')
2640
#[pymodule]
27-
fn cpp_demangle(_py: Python, m: &PyModule) -> PyResult<()> {
28-
// This adds a function to the python module:
29-
/// Demangles a mangled c++ linker symbol name and returns it as a string
30-
#[pyfn(m)]
31-
fn demangle(mangled: String) -> PyResult<String> {
32-
let symbol = ::cpp_demangle::Symbol::new(&mangled[..]).map_err(|error| {
33-
exceptions::PyValueError::new_err(("Could not demangle symbol", error.to_string()))
34-
})?;
35-
let demangled = symbol.demangle(&Default::default()).map_err(|error| {
36-
exceptions::PyValueError::new_err((
37-
"Could not format demangled name as string",
38-
error.to_string(),
39-
))
40-
})?;
41-
42-
Ok(demangled)
43-
}
44-
45-
Ok(())
41+
mod cpp_demangle {
42+
#[pymodule_export]
43+
use super::demangle;
4644
}

0 commit comments

Comments
 (0)