diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 3163d9b..63f8a71 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -42,7 +42,7 @@ jobs: run: cargo test --workspace --all-targets --all-features run: - name: 3. Run default Rust crate + name: 3. Run all Rust binaries runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -50,8 +50,11 @@ jobs: with: toolchain: nightly components: cargo,clippy,rustfmt - - name: Run default Rust crate - run: # cargo run --all-features --bin-name TODO + - name: Run all Rust binaries + # If we ever add more than two binaries, detect them all automatically + run: | + cargo run --bin cpp-string-overload + cargo run --bin rust-string-overload clippy-rust: name: 4. Clippy lints on Rust crates diff --git a/Cargo.lock b/Cargo.lock index 9642727..e5246d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,16 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "cc" +version = "1.2.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" +dependencies = [ + "find-msvc-tools", + "shlex", +] + [[package]] name = "cpp" version = "0.5.11" @@ -31,6 +41,21 @@ name = "cpp-string-overload" version = "0.0.0" dependencies = [ "cpp", + "cpp_build", +] + +[[package]] +name = "cpp_build" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f6fed3200ba0708c2adca5f6ed5ae202edd824bd4cbac7935a85edac9bcddce" +dependencies = [ + "cc", + "cpp_common", + "proc-macro2", + "regex", + "syn", + "unicode-xid", ] [[package]] @@ -57,6 +82,12 @@ dependencies = [ "syn", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + [[package]] name = "memchr" version = "2.8.3" @@ -81,6 +112,41 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "regex" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "syn" version = "2.0.118" @@ -97,3 +163,9 @@ name = "unicode-ident" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" diff --git a/Cargo.toml b/Cargo.toml index d7bff37..3cfd34f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,3 +28,4 @@ rust-version = "1.99" [workspace.dependencies] cpp = "0.5.11" +cpp_build = "0.5.11" diff --git a/README.md b/README.md index c113b17..6427d92 100644 --- a/README.md +++ b/README.md @@ -12,4 +12,5 @@ git clone https://github.com/rustfoundation/overloading-examples cd overloading-examples rustup override set nightly cargo run +cargo run --bin rust-string-overload ``` diff --git a/cpp-string-overload/Cargo.toml b/cpp-string-overload/Cargo.toml index fc62acc..faf91b1 100644 --- a/cpp-string-overload/Cargo.toml +++ b/cpp-string-overload/Cargo.toml @@ -14,3 +14,6 @@ rust-version.workspace = true [dependencies] cpp.workspace = true + +[build-dependencies] +cpp_build.workspace = true diff --git a/cpp-string-overload/build.rs b/cpp-string-overload/build.rs new file mode 100644 index 0000000..f793c81 --- /dev/null +++ b/cpp-string-overload/build.rs @@ -0,0 +1,3 @@ +fn main() { + cpp_build::build("src/bin/cpp-string-overload.rs"); +} diff --git a/cpp-string-overload/src/bin/cpp-string-overload.rs b/cpp-string-overload/src/bin/cpp-string-overload.rs index 46669e4..de86ae7 100644 --- a/cpp-string-overload/src/bin/cpp-string-overload.rs +++ b/cpp-string-overload/src/bin/cpp-string-overload.rs @@ -1,3 +1,15 @@ +use cpp::cpp; + +cpp! {{ + #include +}} + fn main() { - println!("This does nothing yet"); + println!("This does nothing in Rust yet"); + + unsafe { + cpp!([] -> () as "void" { + std::cout << "This does nothing in C++ yet" << std::endl; + }); + } } diff --git a/cpp-string-overload/src/bin/rust-string-overload.rs b/cpp-string-overload/src/bin/rust-string-overload.rs index 46669e4..c73ed68 100644 --- a/cpp-string-overload/src/bin/rust-string-overload.rs +++ b/cpp-string-overload/src/bin/rust-string-overload.rs @@ -1,3 +1,3 @@ fn main() { - println!("This does nothing yet"); + println!("This does nothing in Rust yet"); }