open62541-sys 0.5.1

Low-level, unsafe bindings for the C99 library open62541, an open source and free implementation of OPC UA (OPC Unified Architecture).
Documentation
[package]
name = "open62541-sys"
version = "0.5.1"
authors = ["HMI Project"]
edition = "2024"
# Keep MSRV in sync with `test.yaml`/`build.rs`. Use versions that are at least 6 months old.
rust-version = "1.85"
description = "Low-level, unsafe bindings for the C99 library open62541, an open source and free implementation of OPC UA (OPC Unified Architecture)."
documentation = "https://docs.rs/open62541-sys"
readme = "README.md"
homepage = "https://github.com/HMIProject/open62541-sys"
repository = "https://github.com/HMIProject/open62541-sys.git"
license = "MPL-2.0"
keywords = ["opcua", "plc", "automation", "hardware", "protocol"]
categories = ["network-programming", "embedded", "external-ffi-bindings"]
include = [
  "CHANGELOG.md",
  "README.md",
  "LICENSES/MPL-2.0.txt",
  "build.rs",
  "src/",
  "wrapper.c",
  "wrapper.h",
  "mbedtls/**/CMakeLists.txt",
  "mbedtls/3rdparty/everest/",
  "mbedtls/3rdparty/p256-m/",
  "mbedtls/cmake/",
  "mbedtls/include/",
  "mbedtls/library/",
  "mbedtls/pkgconfig/",
  # This file is not actually necessary but its omission causes warnings which
  # are easy to mistake for build errors.
  "mbedtls/scripts/config.py",
  "open62541/**/CMakeLists.txt",
  "open62541/arch/",
  "open62541/deps/",
  # Exclude large dependencies that we do not use. If build fails, check first
  # if one of these is missing.
  "!open62541/deps/mdnsd/",
  "!open62541/deps/mqtt-c/",
  "!open62541/deps/nodesetLoader/",
  # We do not include OPC UA NodeSets. They are required when implementing OPC
  # UA servers: the `nodeset_compiler` tool uses these definitions to generate
  # custom C and header files that can be used in a server implementation. See
  # `open62541/doc/nodeset_compiler.rst` for details.
  "!open62541/deps/ua-nodeset/",
  # We require this file only to make sure the directory `ua-nodeset/` exists.
  "open62541/deps/ua-nodeset/readme.md",
  "open62541/doc/conf.py",
  "open62541/include/open62541/",
  "open62541/plugins/",
  "open62541/tools/certs/",
  "open62541/tools/cmake/",
  "open62541/tools/generate_*.py",
  "open62541/tools/nodeset_compiler/",
  "open62541/tools/open62541.pc.in",
  "open62541/tools/schema/",
]

[build-dependencies]
bindgen = { version = "0.72.1" }
cc = "1.2.38"
cmake = "0.1.54"
version_check = "0.9.5"

[features]
default = []
mbedtls = []

[lints.rust]
future_incompatible = { level = "warn", priority = -1 }
keyword_idents = { level = "warn", priority = -1 }
let_underscore = { level = "warn", priority = -1 }
missing_debug_implementations = "warn"
nonstandard_style = { level = "warn", priority = -1 }
refining_impl_trait = { level = "warn", priority = -1 }
rust_2018_compatibility = { level = "warn", priority = -1 }
rust_2018_idioms = { level = "warn", priority = -1 }
rust_2021_compatibility = { level = "warn", priority = -1 }
rust_2024_compatibility = { level = "warn", priority = -1 }
trivial_casts = "warn"
trivial_numeric_casts = "warn"
unreachable_pub = "warn"
# `bindgen` generates unsafe code to enable FFI.
unsafe_code = "allow"
unsafe_op_in_unsafe_fn = "warn"
unused = { level = "warn", priority = -1 }
warnings = "warn"

[lints.clippy]
# `bindgen` generates code with absolute paths.
absolute_paths = "allow"
allow_attributes = "warn"
allow_attributes_without_reason = "warn"
as_conversions = "warn"
as_ptr_cast_mut = "warn"
as_underscore = "warn"
cast_possible_truncation = "warn"
clone_on_ref_ptr = "warn"
default_trait_access = "warn"
enum_variant_names = "warn"
error_impl_error = "warn"
# We use `expect()` to panic in build script.
ok_expect = "allow"
fallible_impl_from = "warn"
format_push_string = "warn"
get_unwrap = "warn"
index_refutable_slice = "warn"
indexing_slicing = "warn"
manual_assert = "warn"
match_wild_err_arm = "warn"
missing_assert_message = "warn"
missing_const_for_fn = "warn"
missing_errors_doc = "warn"
mod_module_files = "warn"
module_name_repetitions = "warn"
panic = "warn"
panic_in_result_fn = "warn"
pedantic = { level = "warn", priority = -1 }
should_panic_without_expect = "warn"
string_slice = "warn"
unimplemented = "warn"
unnecessary_self_imports = "warn"
unreachable = "warn"
unwrap_in_result = "warn"
unwrap_used = "warn"
verbose_file_reads = "warn"