diff -r 98a0fbda8739 -r 5532823e8c18 rust/hg-cpython/src/lib.rs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rust/hg-cpython/src/lib.rs Mon Dec 03 06:52:17 2018 +0100 @@ -0,0 +1,40 @@ +// lib.rs +// +// Copyright 2018 Georges Racinet +// +// This software may be used and distributed according to the terms of the +// GNU General Public License version 2 or any later version. + +//! Python bindings of `hg-core` objects using the `cpython` crate. +//! Once compiled, the resulting single shared library object can be placed in +//! the `mercurial` package directly as `rustext.so` or `rustext.dll`. +//! It holds several modules, so that from the point of view of Python, +//! it behaves as the `cext` package. +//! +//! Example: +//! ``` +//! >>> from mercurial.rustext import ancestor +//! >>> ancestor.__doc__ +//! 'Generic DAG ancestor algorithms - Rust implementation' +//! ``` + +#[macro_use] +extern crate cpython; +extern crate hg; + +mod ancestors; +mod exceptions; + +py_module_initializer!(rustext, initrustext, PyInit_rustext, |py, m| { + m.add( + py, + "__doc__", + "Mercurial core concepts - Rust implementation", + )?; + + let dotted_name: String = m.get(py, "__name__")?.extract(py)?; + m.add(py, "__package__", "mercurial")?; + m.add(py, "ancestor", ancestors::init_module(py, &dotted_name)?)?; + m.add(py, "GraphError", py.get_type::())?; + Ok(()) +});