From 2ab092ec0e874932bf579b51d28aa389f2fa8ea9 Mon Sep 17 00:00:00 2001 From: Ryo Yamashita Date: Sun, 30 Jun 2024 15:59:06 +0900 Subject: [PATCH] Minor refactor --- ort-sys/build.rs | 11 ++++------- src/lib.rs | 43 ++++++++++++++----------------------------- 2 files changed, 18 insertions(+), 36 deletions(-) diff --git a/ort-sys/build.rs b/ort-sys/build.rs index f7793d36..8ceefd79 100644 --- a/ort-sys/build.rs +++ b/ort-sys/build.rs @@ -392,9 +392,9 @@ fn prepare_libort_dir() -> (PathBuf, bool) { copy_libraries(&lib_dir.join("lib"), &out_dir); } - let our_version = include_str!("./VERSION_NUMBER"); + const OUR_VERSION: &str = include_str!("./VERSION_NUMBER"); let their_version = fs::read_to_string(lib_dir.join("VERSION_NUMBER")).unwrap_or_else(|e| panic!("`VERSION_NUMBER`を読めませんでした: {e}")); - assert_eq!(our_version.trim_end(), their_version.trim_end(), "`VERSION_NUMBER`が異なります"); + assert_eq!(OUR_VERSION.trim_end(), their_version.trim_end(), "`VERSION_NUMBER`が異なります"); (lib_dir, true) } @@ -427,11 +427,8 @@ fn real_main(link: bool) { fn main() { if cfg!(feature = "download-binaries") { let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); - fs::write( - out_dir.join("downloaded_version.rs"), - format!("#[macro_export] macro_rules! downloaded_version(() => ({:?}));", include_str!("./VERSION_NUMBER").trim_end()) - ) - .unwrap(); + let version = include_str!("./VERSION_NUMBER").trim_end(); + fs::write(out_dir.join("downloaded_version.rs"), format!("#[macro_export] macro_rules! downloaded_version(() => ({version:?}));")).unwrap(); } if env::var("DOCS_RS").is_ok() { diff --git a/src/lib.rs b/src/lib.rs index 569af7ee..bd8f560b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -75,36 +75,24 @@ pub use self::value::{ ValueRefMut, ValueType, ValueTypeMarker }; -/// このクレートの`load-dynamic`が有効化されていなければコンパイルエラー。 +/// このクレートのフィーチャが指定された状態になっていなければコンパイルエラー。 #[cfg(feature = "load-dynamic")] #[macro_export] -macro_rules! assert_load_dynamic_is_enabled { - ($_:literal $(,)?) => {}; -} - -/// このクレートの`load-dynamic`が有効化されていなければコンパイルエラー。 -#[cfg(not(feature = "load-dynamic"))] -#[macro_export] -macro_rules! assert_load_dynamic_is_enabled { - ($msg:literal $(,)?) => { +macro_rules! assert_feature { + (cfg(feature = "load-dynamic"), $msg:literal $(,)?) => {}; + (cfg(not(feature = "load-dynamic")), $msg:literal $(,)?) => { ::std::compile_error!($msg); }; } -/// このクレートの`load-dynamic`が無効化されていなければコンパイルエラー。 -#[cfg(feature = "load-dynamic")] +/// このクレートのフィーチャが指定された状態になっていなければコンパイルエラー。 +#[cfg(not(feature = "load-dynamic"))] #[macro_export] -macro_rules! assert_load_dynamic_is_disabled { - ($msg:literal $(,)?) => { +macro_rules! assert_feature { + (cfg(feature = "load-dynamic"), $msg:literal $(,)?) => { ::std::compile_error!($msg); }; -} - -/// このクレートの`load-dynamic`が無効化されていなければコンパイルエラー。 -#[cfg(not(feature = "load-dynamic"))] -#[macro_export] -macro_rules! assert_load_dynamic_is_disabled { - ($_:literal $(,)?) => {}; + (cfg(not(feature = "load-dynamic")), $msg:literal $(,)?) => {}; } #[cfg(not(all(target_arch = "x86", target_os = "windows")))] @@ -184,7 +172,7 @@ static G_ENV_FOR_VOICEVOX: once_cell::sync::OnceCell = once_cell::syn #[cfg(feature = "__init-for-voicevox")] thread_local! { - static G_ORT_API_FOR_ENV_BUILD: std::cell::Cell>>> = const { std::cell::Cell::new(None) }; + static G_ORT_API_FOR_ENV_BUILD: std::cell::Cell>> = const { std::cell::Cell::new(None) }; } #[cfg(feature = "__init-for-voicevox")] @@ -269,7 +257,7 @@ pub fn try_init_from(filename: &std::ffi::OsStr, tp_options: Option) -> anyho .unwrap_or_else(|| panic!("`GetApi({ORT_API_VERSION})`が失敗しました。おそらく1.{MINOR_VERSION}より古いものがリンクされています")); let api = AssertSendSync(api); - let _env = create_env(api, tp_options)?; + let _env = create_env(api.0, tp_options)?; Ok(EnvHandle { _env, api }) }) } #[cfg(feature = "__init-for-voicevox")] -fn create_env( - api: AssertSendSync>, - tp_options: Option -) -> anyhow::Result> { +fn create_env(api: NonNull, tp_options: Option) -> anyhow::Result> { G_ORT_API_FOR_ENV_BUILD.set(Some(api)); let _unset_api = UnsetOrtApi; @@ -340,7 +325,7 @@ pub fn api() -> NonNull { return G_ENV_FOR_VOICEVOX .get() .map(|&EnvHandle { api: AssertSendSync(api), .. }| api) - .or_else(|| G_ORT_API_FOR_ENV_BUILD.get().map(|AssertSendSync(api)| api)) + .or_else(|| G_ORT_API_FOR_ENV_BUILD.get()) .expect("`try_init_from`または`try_init`で初期化されていなくてはなりません"); } unsafe {