libxml 0.1.1

A Rust wrapper for libxml2 - the XML C parser and toolkit developed for the Gnome project
Documentation

Build Status API Documentation License crates.io

Rust wrapper for libxml2.

CAUTION: Low-level wrapper without safety guarantees

The main goal of this project is to benefit from libxml2's maturity and stability while the native Rust XML crates mature to be near-drop-in replacements.

As such, the crate exposes the libxml2 datastructures with minimal adaptations to the Rust model, leaving a lot of the potential concerns submerged in the C layer. That entails:

  • No Rust safety guarantees for mutability, as well as ownership - it is possible to own two Rust objects pointing to the same C pointer (with differing mutability).
  • No memory safety guarantees - it is possible to leak memory via e.g. careless use of unlink, among others.
  • No thread safety - libxml2's global memory management is a challenge to adapt in a thread-safe way with minimal intervention

COVERAGE: Only covers a subset of libxml2 at the moment, contributions are welcome. We try to increase support with each release.

WELCOME! With these caveats, the contributors to the project are migrating production work towards Rust and find a continuing reliance on libxml2 a helpful relief for initial ports. As such, contributions to this crate are welcome, if your workflow is not yet fully supported.