You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This means unsafe_op_in_unsafe_fn in edition 2024 complains about the from_library function.
Example:
// file src/foo.hexternintSOME_CONSTANT;
// file src/main.rs#![allow(non_camel_case_types)]#![allow(non_snake_case)]#![allow(non_upper_case_globals)]#![allow(dead_code)]#![allow(clippy::all)]#![allow(rustdoc::broken_intra_doc_links)]// Include generated bindings fileinclude!(concat!(env!("OUT_DIR"),"/bindings.rs"));fnmain(){println!("Hello, world!");}
//file build.rsexterncrate bindgen;use std::env;use std::path::PathBuf;fnmain(){println!("cargo:rerun-if-changed=src/foo.h");// The bindgen::Builder is the main entry point// to bindgen, and lets you build up options for// the resulting bindings.let bindings = bindgen::Builder::default().header("src/foo.h").dynamic_library_name("foo").wrap_unsafe_ops(true).generate().expect("Unable to generate bindings");// Write the bindings to the $OUT_DIR/bindings.rs file.let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
bindings
.write_to_file(out_path.join("bindings.rs")).expect("Couldn't write bindings!");}
Running cargo fix --edition yields:
$ cargo fix --edition --allow-dirty
Compiling bindgen-example v0.1.0 (/home/brian/Dev/rust/bindgen-example)
warning[E0133]: call to unsafe function`libloading::Library::new` is unsafe and requires unsafe block
--> /home/brian/Dev/rust/bindgen-example/target/debug/build/bindgen-example-e99abd65eea52984/out/bindings.rs:12:23
|
12 |let library = ::libloading::Library::new(path)?;| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
= note: for more information, see issue #71668 <https://github.com/rust-lang/rust/issues/71668>
= note: consult the function's documentation for information on how to avoid undefined behaviornote: an unsafe function restricts its caller, but its body is safe by default --> /home/brian/Dev/rust/bindgen-example/target/debug/build/bindgen-example-e99abd65eea52984/out/bindings.rs:8:5 |8 | / pub unsafe fn new<P>(path: P) -> Result<Self, ::libloading::Error>9 | | where10 | | P: AsRef<::std::ffi::OsStr>, | |____________________________________^ = note: `--force-warn unsafe-op-in-unsafe-fn` implied by `--force-warn rust-2024-compatibility`warning[E0133]: call to unsafe function `libloading::Library::get` is unsafe and requires unsafe block --> /home/brian/Dev/rust/bindgen-example/target/debug/build/bindgen-example-e99abd65eea52984/out/bindings.rs:20:29 |20 | let SOME_CONSTANT = __library | _____________________________^21 | | .get::<*mut ::std::os::raw::c_int>(b"SOME_CONSTANT\0") | |__________________________________________________________________^ call to unsafe function | = note: for more information, see issue #71668 <https://github.com/rust-lang/rust/issues/71668> = note: consult the function's documentation for information on how to avoid undefined behavior
note: an unsafe functionrestricts its caller, but its body is safe by default
--> /home/brian/Dev/rust/bindgen-example/target/debug/build/bindgen-example-e99abd65eea52984/out/bindings.rs:15:5
|
15 | / pub unsafe fn from_library<L>(library: L) -> Result<Self, ::libloading::Error>
16 || where
17 || L: Into<::libloading::Library>,
||_______________________________________^
For more information about this error, try `rustc --explain E0133`.
The text was updated successfully, but these errors were encountered:
This means
unsafe_op_in_unsafe_fn
in edition 2024 complains about thefrom_library
function.Example:
Running
cargo fix --edition
yields:The text was updated successfully, but these errors were encountered: