mirror of
https://gitee.com/openharmony/third_party_rust_regex
synced 2025-04-13 16:10:27 +00:00

This commit contains a new sub-crate called `regex-capi` which provides a C library called `rure`. A new `RegexBuilder` type was also added to the Rust API proper, which permits both users of C and Rust to tweak various knobs on a `Regex`. This fixes issue #166. Since it's likely that this API will be used to provide bindings to other languages, I've created bindings to Go as a proof of concept: https://github.com/BurntSushi/rure-go --- to my knowledge, the wrapper has as little overhead as it can. It was in particular important for the C library to not store any pointers provided by the caller, as this can be problematic in languages with managed runtimes and a moving GC. The C API doesn't expose `RegexSet` and a few other convenience functions such as splitting or replacing. That can be future work. Note that the regex-capi crate requires Rust 1.9, since it uses `panic::catch_unwind`. This also includes tests of basic API functionality and a commented example. Both should now run as part of CI.
9 lines
265 B
Bash
Executable File
9 lines
265 B
Bash
Executable File
#!/bin/sh
|
|
|
|
set -ex
|
|
|
|
cargo build --manifest-path ../Cargo.toml
|
|
gcc -DDEBUG -o test test.c -ansi -Wall -I../include -L../target/debug -lrure
|
|
# If you're using librure.a, then you'll need to link other stuff:
|
|
# -lutil -ldl -lpthread -lgcc_s -lc -lm -lrt -lutil -lrure
|