iconv-native 0.1.0

A lightweight text encoding converter based on platform native API or libiconv
Documentation
use std::env::var;

fn main() {
    let feature_libiconv = var("CARGO_FEATURE_LIBICONV").is_ok();
    let feature_fallback_libiconv = var("CARGO_FEATURE_FALLBACK_LIBICONV").is_ok();
    let is_windows = var("CARGO_CFG_WINDOWS").is_ok();
    let is_using_win32 = var("CARGO_FEATURE_WIN32").is_ok() && is_windows;
    let is_using_web_encoding = var("CARGO_FEATURE_WEB_ENCODING").is_ok()
        && var("CARGO_CFG_TARGET_ARCH").as_deref() == Ok("wasm32");
    let is_linux = var("CARGO_CFG_TARGET_OS").as_deref() == Ok("linux");
    let is_gnu = var("CARGO_CFG_TARGET_ENV").as_deref() == Ok("gnu");
    let is_hurd = var("CARGO_CFG_TARGET_OS").as_deref() == Ok("hurd");
    let is_apple = var("CARGO_CFG_TARGET_VENDOR").as_deref() == Ok("apple");
    let is_using_libc_iconv =
        var("CARGO_FEATURE_LIBC_ICONV").is_ok() && ((is_gnu && is_linux) || is_hurd || is_apple);
    let is_using_fallback = !(is_using_libc_iconv || is_using_win32 || is_using_web_encoding);
    if is_windows && (feature_libiconv || (feature_fallback_libiconv && is_using_fallback)) {
        #[cfg(target_env = "msvc")]
        vcpkg::find_package("libiconv").unwrap();
    }
}