From a25aaec6f51b0a4e477f7474a451aa74f12d56b2 Mon Sep 17 00:00:00 2001 From: Christien Rioux Date: Tue, 15 Sep 2026 21:59:08 -0400 Subject: [PATCH] fix unnameable types in public api --- Cargo.toml | 2 + veilid-cli/src/peers_table_view.rs | 2 +- veilid-cli/src/settings.rs | 2 +- veilid-core/public-api.txt | 41 +++++++++++++++---- veilid-core/smoketest/Cargo.lock | 20 ++++----- veilid-core/src/crypto/crypto_system/mod.rs | 2 +- veilid-core/src/crypto/envelope/mod.rs | 2 +- veilid-core/src/crypto/receipt/mod.rs | 2 +- veilid-core/src/crypto/types/mod.rs | 2 +- veilid-core/src/lib.rs | 9 ++-- .../veilid_layer_filter/log_directive.rs | 6 +++ .../route_spec_store/route_set_id.rs | 16 +------- .../inbound_transaction_id.rs | 2 +- .../inbound_transactions/mod.rs | 2 +- .../inbound_watches/inbound_watch_id.rs | 2 +- .../record_store_inner/inbound_watches/mod.rs | 2 +- .../record_store_inner/limited_size.rs | 8 ++-- veilid-core/src/veilid_api/types/fourcc.rs | 8 +++- .../src/veilid_api/types/veilid_capability.rs | 2 +- veilid-remote-api/smoketest/Cargo.lock | 20 ++++----- veilid-server/src/settings.rs | 2 +- 21 files changed, 89 insertions(+), 65 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index de7ed957..a9306257 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -239,4 +239,6 @@ mutable_key_type = "allow" # Until this is merged (NodeRef is safe to hash/eq): [workspace.lints.rust] unused_must_use = "deny" +# A type reachable through the public API but not nameable by a user is unusable there +unnameable_types = "deny" unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] } diff --git a/veilid-cli/src/peers_table_view.rs b/veilid-cli/src/peers_table_view.rs index 7b1124eb..6653cf38 100644 --- a/veilid-cli/src/peers_table_view.rs +++ b/veilid-cli/src/peers_table_view.rs @@ -3,7 +3,7 @@ use cursive_table_view::*; use std::cmp::Ordering; #[derive(Copy, Clone, PartialEq, Eq, Hash)] -pub enum PeerTableColumn { +pub(crate) enum PeerTableColumn { NodeId, Address, LatencyAvg, diff --git a/veilid-cli/src/settings.rs b/veilid-cli/src/settings.rs index 357cbda0..caf72815 100644 --- a/veilid-cli/src/settings.rs +++ b/veilid-cli/src/settings.rs @@ -82,7 +82,7 @@ pub fn load_config( } #[derive(Copy, Clone, Debug)] -pub enum LogLevel { +pub(crate) enum LogLevel { Error, Warn, Info, diff --git a/veilid-core/public-api.txt b/veilid-core/public-api.txt index 012bd134..88bd5970 100644 --- a/veilid-core/public-api.txt +++ b/veilid-core/public-api.txt @@ -1186,7 +1186,7 @@ pub struct veilid_core::CryptoSystemGuard<'a> impl<'a> veilid_core::CryptoSystemGuard<'a> pub fn veilid_core::CryptoSystemGuard<'a>::as_async(self) -> veilid_core::AsyncCryptoSystemGuard<'a> impl core::ops::deref::Deref for veilid_core::CryptoSystemGuard<'_> -pub type veilid_core::CryptoSystemGuard<'_>::Target = (dyn veilid_core::CryptoSystem + core::marker::Send + core::marker::Sync) +pub type veilid_core::CryptoSystemGuard<'_>::Target = (dyn veilid_core::CryptoSystem + core::marker::Sync + core::marker::Send) pub fn veilid_core::CryptoSystemGuard<'_>::deref(&self) -> &Self::Target pub struct veilid_core::DHTRecordDescriptor impl veilid_core::DHTRecordDescriptor @@ -1690,7 +1690,7 @@ pub fn veilid_core::LogOutput::file>(P, pub fn veilid_core::LogOutput::layer(alloc::string::String, alloc::boxed::Box<(dyn tracing_subscriber::layer::Layer + core::marker::Send + core::marker::Sync + 'static)>) -> Self pub fn veilid_core::LogOutput::stderr(bool) -> Self pub fn veilid_core::LogOutput::stdout(bool) -> Self -pub fn veilid_core::LogOutput::try_with_directives(self, C) -> veilid_core::VeilidAPIResult +pub fn veilid_core::LogOutput::try_with_directives(self, C) -> veilid_core::VeilidAPIResult pub fn veilid_core::LogOutput::with_common_log_level(self, veilid_core::VeilidConfigLogLevel) -> Self pub struct veilid_core::MemberId impl veilid_core::MemberId @@ -3041,7 +3041,7 @@ pub fn veilid_core::VeilidLayerFilter::new_with_config(veilid_core::VeilidLayerF pub fn veilid_core::VeilidLayerFilter::set_log_key(&self, alloc::string::String) pub fn veilid_core::VeilidLayerFilter::set_log_key_filter(&self, veilid_core::VeilidLayerLogKeyFilter) pub fn veilid_core::VeilidLayerFilter::try_apply_default_env(&self) -> veilid_core::VeilidAPIResult<()> -pub fn veilid_core::VeilidLayerFilter::try_apply_directives(&self, C) -> veilid_core::VeilidAPIResult<()> +pub fn veilid_core::VeilidLayerFilter::try_apply_directives(&self, C) -> veilid_core::VeilidAPIResult<()> pub fn veilid_core::VeilidLayerFilter::try_apply_directives_string>(&self, S) -> veilid_core::VeilidAPIResult<()> pub fn veilid_core::VeilidLayerFilter::try_apply_env>(&self, S) -> veilid_core::VeilidAPIResult<()> impl core::default::Default for veilid_core::VeilidLayerFilter @@ -3058,11 +3058,11 @@ pub fn veilid_core::VeilidLayerFilterConfig::apply_directives impl core::iter::traits::iterator::Iterator pub fn veilid_core::VeilidLayerFilterConfig::new() -> Self pub fn veilid_core::VeilidLayerFilterConfig::try_apply_default_env(&mut self) -> veilid_core::VeilidAPIResult<()> -pub fn veilid_core::VeilidLayerFilterConfig::try_apply_directives(&mut self, C) -> veilid_core::VeilidAPIResult<()> +pub fn veilid_core::VeilidLayerFilterConfig::try_apply_directives(&mut self, C) -> veilid_core::VeilidAPIResult<()> pub fn veilid_core::VeilidLayerFilterConfig::try_apply_directives_string>(&mut self, S) -> veilid_core::VeilidAPIResult<()> pub fn veilid_core::VeilidLayerFilterConfig::try_apply_env>(&mut self, S) -> veilid_core::VeilidAPIResult<()> pub fn veilid_core::VeilidLayerFilterConfig::try_with_default_env(self) -> veilid_core::VeilidAPIResult -pub fn veilid_core::VeilidLayerFilterConfig::try_with_directives(self, C) -> veilid_core::VeilidAPIResult +pub fn veilid_core::VeilidLayerFilterConfig::try_with_directives(self, C) -> veilid_core::VeilidAPIResult pub fn veilid_core::VeilidLayerFilterConfig::try_with_directives_string>(self, S) -> veilid_core::VeilidAPIResult pub fn veilid_core::VeilidLayerFilterConfig::try_with_env>(self, S) -> veilid_core::VeilidAPIResult pub fn veilid_core::VeilidLayerFilterConfig::with_common_log_level(self, veilid_core::VeilidConfigLogLevel) -> Self @@ -3095,6 +3095,8 @@ pub fn veilid_core::VeilidLogDirective::into_iter(self) -> Self::IntoIter impl core::str::traits::FromStr for veilid_core::VeilidLogDirective pub type veilid_core::VeilidLogDirective::Err = veilid_core::VeilidAPIError pub fn veilid_core::VeilidLogDirective::from_str(&str) -> core::result::Result +impl veilid_core::TryIntoIterVeilidLogDirective for veilid_core::VeilidLogDirective +pub fn veilid_core::VeilidLogDirective::try_into_iter(self) -> veilid_core::VeilidAPIResult> pub struct veilid_core::VeilidRouteChange pub veilid_core::VeilidRouteChange::dead_remote_routes: alloc::vec::Vec pub veilid_core::VeilidRouteChange::dead_routes: alloc::vec::Vec @@ -3149,8 +3151,8 @@ pub fn veilid_core::VeilidTracing::stderr() -> Self pub fn veilid_core::VeilidTracing::stdout() -> Self pub fn veilid_core::VeilidTracing::try_apply_default_env(&self) -> veilid_core::VeilidAPIResult<()> pub fn veilid_core::VeilidTracing::try_apply_default_env_for_output>(&self, veilid_core::LogOutputKind) -> veilid_core::VeilidAPIResult<()> -pub fn veilid_core::VeilidTracing::try_apply_directives(&self, C) -> veilid_core::VeilidAPIResult<()> -pub fn veilid_core::VeilidTracing::try_apply_directives_for_output(&self, veilid_core::LogOutputKind, C) -> veilid_core::VeilidAPIResult<()> +pub fn veilid_core::VeilidTracing::try_apply_directives(&self, C) -> veilid_core::VeilidAPIResult<()> +pub fn veilid_core::VeilidTracing::try_apply_directives_for_output(&self, veilid_core::LogOutputKind, C) -> veilid_core::VeilidAPIResult<()> pub fn veilid_core::VeilidTracing::try_apply_directives_string>(&self, S) -> veilid_core::VeilidAPIResult<()> pub fn veilid_core::VeilidTracing::try_apply_directives_string_for_output>(&self, veilid_core::LogOutputKind, S) -> veilid_core::VeilidAPIResult<()> pub fn veilid_core::VeilidTracing::try_apply_env>(&self, S) -> veilid_core::VeilidAPIResult<()> @@ -3217,13 +3219,13 @@ pub fn veilid_core::CryptoSystem::crypto(&self) -> veilid_core::VeilidComponentG pub fn veilid_core::CryptoSystem::decapsulation_key_from_signing_secret(&self, &veilid_core::SecretKey) -> veilid_core::VeilidAPIResult pub fn veilid_core::CryptoSystem::decapsulation_key_length(&self) -> usize pub fn veilid_core::CryptoSystem::decrypt_aead(&self, &[u8], &veilid_core::Nonce, &veilid_core::SharedSecret, core::option::Option<&[u8]>) -> veilid_core::VeilidAPIResult> -pub fn veilid_core::CryptoSystem::decrypt_in_place_aead(&self, &mut dyn veilid_core::crypto::crypto_system::buffer::CryptoSystemBuffer, &veilid_core::Nonce, &veilid_core::SharedSecret, core::option::Option<&[u8]>) -> veilid_core::VeilidAPIResult<()> +pub fn veilid_core::CryptoSystem::decrypt_in_place_aead(&self, &mut dyn veilid_core::CryptoSystemBuffer, &veilid_core::Nonce, &veilid_core::SharedSecret, core::option::Option<&[u8]>) -> veilid_core::VeilidAPIResult<()> pub fn veilid_core::CryptoSystem::default_salt_length(&self) -> usize pub fn veilid_core::CryptoSystem::derive_shared_secret(&self, &[u8], &[u8]) -> veilid_core::VeilidAPIResult pub fn veilid_core::CryptoSystem::encapsulation_key_from_signing_key(&self, &veilid_core::PublicKey) -> veilid_core::VeilidAPIResult pub fn veilid_core::CryptoSystem::encapsulation_key_length(&self) -> usize pub fn veilid_core::CryptoSystem::encrypt_aead(&self, &[u8], &veilid_core::Nonce, &veilid_core::SharedSecret, core::option::Option<&[u8]>) -> veilid_core::VeilidAPIResult> -pub fn veilid_core::CryptoSystem::encrypt_in_place_aead(&self, &mut dyn veilid_core::crypto::crypto_system::buffer::CryptoSystemBuffer, &veilid_core::Nonce, &veilid_core::SharedSecret, core::option::Option<&[u8]>) -> veilid_core::VeilidAPIResult<()> +pub fn veilid_core::CryptoSystem::encrypt_in_place_aead(&self, &mut dyn veilid_core::CryptoSystemBuffer, &veilid_core::Nonce, &veilid_core::SharedSecret, core::option::Option<&[u8]>) -> veilid_core::VeilidAPIResult<()> pub fn veilid_core::CryptoSystem::generate_hash(&self, &[u8]) -> veilid_core::HashDigest pub fn veilid_core::CryptoSystem::generate_hash_reader(&self, &mut dyn alloc::io::read::Read) -> veilid_core::VeilidAPIResult pub fn veilid_core::CryptoSystem::generate_kem_keypair(&self) -> veilid_core::KemKeyPair @@ -3250,6 +3252,21 @@ pub fn veilid_core::CryptoSystem::validate_keypair(&self, &veilid_core::PublicKe pub fn veilid_core::CryptoSystem::verify(&self, &veilid_core::PublicKey, &[u8], &veilid_core::Signature) -> veilid_core::VeilidAPIResult pub fn veilid_core::CryptoSystem::verify_in_place(&self, &veilid_core::PublicKey, &[u8], core::ops::range::Range, usize) -> veilid_core::VeilidAPIResult pub fn veilid_core::CryptoSystem::verify_password(&self, &[u8], &str) -> veilid_core::VeilidAPIResult +pub trait veilid_core::CryptoSystemBuffer: core::convert::AsRef<[u8]> + core::convert::AsMut<[u8]> +pub fn veilid_core::CryptoSystemBuffer::extend_from_slice(&mut self, &[u8]) +pub fn veilid_core::CryptoSystemBuffer::is_empty(&self) -> bool +pub fn veilid_core::CryptoSystemBuffer::len(&self) -> usize +pub fn veilid_core::CryptoSystemBuffer::truncate(&mut self, usize) +impl veilid_core::CryptoSystemBuffer for alloc::vec::Vec +pub fn alloc::vec::Vec::extend_from_slice(&mut self, &[u8]) +pub fn alloc::vec::Vec::is_empty(&self) -> bool +pub fn alloc::vec::Vec::len(&self) -> usize +pub fn alloc::vec::Vec::truncate(&mut self, usize) +impl veilid_core::CryptoSystemBuffer for bytes::bytes_mut::BytesMut +pub fn bytes::bytes_mut::BytesMut::extend_from_slice(&mut self, &[u8]) +pub fn bytes::bytes_mut::BytesMut::is_empty(&self) -> bool +pub fn bytes::bytes_mut::BytesMut::len(&self) -> usize +pub fn bytes::bytes_mut::BytesMut::truncate(&mut self, usize) pub trait veilid_core::OkVeilidAPIResult pub fn veilid_core::OkVeilidAPIResult::ok_try_again(self) -> veilid_core::VeilidAPIResult> pub fn veilid_core::OkVeilidAPIResult::ok_try_again_timeout(self) -> veilid_core::VeilidAPIResult> @@ -3354,6 +3371,12 @@ impl veilid_cor pub fn &T::to_veilid_api_error_argument(&self) -> alloc::string::String impl veilid_core::ToVeilidAPIErrorArgument for core::ops::range::Range pub fn core::ops::range::Range::to_veilid_api_error_argument(&self) -> alloc::string::String +pub trait veilid_core::TryIntoIterVeilidLogDirective +pub fn veilid_core::TryIntoIterVeilidLogDirective::try_into_iter(self) -> veilid_core::VeilidAPIResult> +impl veilid_core::TryIntoIterVeilidLogDirective for veilid_core::VeilidLogDirective +pub fn veilid_core::VeilidLogDirective::try_into_iter(self) -> veilid_core::VeilidAPIResult> +impl veilid_core::TryIntoIterVeilidLogDirective for I where C: core::convert::TryInto, I: core::iter::traits::collect::IntoIterator +pub fn I::try_into_iter(self) -> veilid_core::VeilidAPIResult> pub async fn veilid_core::api_startup(veilid_core::UpdateCallback, veilid_core::VeilidConfig) -> veilid_core::VeilidAPIResult pub async fn veilid_core::api_startup_json(veilid_core::UpdateCallback, alloc::string::String) -> veilid_core::VeilidAPIResult pub fn veilid_core::common_crypto_kinds(&[veilid_core::CryptoKind], &[veilid_core::CryptoKind]) -> alloc::vec::Vec diff --git a/veilid-core/smoketest/Cargo.lock b/veilid-core/smoketest/Cargo.lock index 872b3926..75041d17 100644 --- a/veilid-core/smoketest/Cargo.lock +++ b/veilid-core/smoketest/Cargo.lock @@ -646,9 +646,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" +checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" dependencies = [ "clap_builder", "clap_derive", @@ -656,9 +656,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" +checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" dependencies = [ "anstream", "anstyle", @@ -668,9 +668,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.4" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" +checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" dependencies = [ "heck", "proc-macro2", @@ -680,9 +680,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" +checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" [[package]] name = "cmov" @@ -2547,9 +2547,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.44" +version = "0.23.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6725596c3f2c3a0aef021139e145d4eafe314a6623e4680ca83852b2c67ab2ba" +checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" dependencies = [ "log", "once_cell", diff --git a/veilid-core/src/crypto/crypto_system/mod.rs b/veilid-core/src/crypto/crypto_system/mod.rs index 9ec19a29..197d6c65 100644 --- a/veilid-core/src/crypto/crypto_system/mod.rs +++ b/veilid-core/src/crypto/crypto_system/mod.rs @@ -4,7 +4,7 @@ use super::*; mod buffer; -pub(crate) use buffer::*; +pub use buffer::*; #[cfg(any(feature = "enable-crypto-vld0", feature = "enable-crypto-none"))] pub(crate) mod hpke; diff --git a/veilid-core/src/crypto/envelope/mod.rs b/veilid-core/src/crypto/envelope/mod.rs index 2e1bc71d..94e42bda 100644 --- a/veilid-core/src/crypto/envelope/mod.rs +++ b/veilid-core/src/crypto/envelope/mod.rs @@ -2,7 +2,7 @@ use super::*; use core::convert::TryInto; // Version number of envelope format -fourcc_type!(EnvelopeVersion); +fourcc_type!(pub(crate) EnvelopeVersion); // ENV0 pub const ENVELOPE_VERSION_ENV0: EnvelopeVersion = EnvelopeVersion::new(*b"ENV0"); diff --git a/veilid-core/src/crypto/receipt/mod.rs b/veilid-core/src/crypto/receipt/mod.rs index e7db8f64..bed6ef03 100644 --- a/veilid-core/src/crypto/receipt/mod.rs +++ b/veilid-core/src/crypto/receipt/mod.rs @@ -4,7 +4,7 @@ use super::*; use core::convert::TryInto; // Version number of receipt format -fourcc_type!(ReceiptVersion); +fourcc_type!(pub(crate) ReceiptVersion); // RCP0 pub const RECEIPT_VERSION_RCP0: ReceiptVersion = ReceiptVersion::new(*b"RCP0"); diff --git a/veilid-core/src/crypto/types/mod.rs b/veilid-core/src/crypto/types/mod.rs index 90fc1ea5..7c3ea46c 100644 --- a/veilid-core/src/crypto/types/mod.rs +++ b/veilid-core/src/crypto/types/mod.rs @@ -5,7 +5,7 @@ use core::convert::TryInto; use core::fmt; use core::hash::Hash; -fourcc_type!(CryptoKind); +fourcc_type!(pub CryptoKind); /// Sort best crypto kinds first /// Better crypto kinds are 'less', ordered toward the front of a list diff --git a/veilid-core/src/lib.rs b/veilid-core/src/lib.rs index 4349a0b5..6af3b488 100644 --- a/veilid-core/src/lib.rs +++ b/veilid-core/src/lib.rs @@ -102,9 +102,9 @@ mod table_store; pub use self::component::VeilidComponentGuard; pub use self::core_context::{api_startup, api_startup_json, UpdateCallback}; pub use self::logging::{ - ApiTracingLayer, FmtStripVeilidFields, VeilidLayerFilter, VeilidLayerFilterConfig, - VeilidLayerLogKeyFilter, VeilidLogDirective, VeilidLogKey, VeilidLogKeyFilterMode, - VEILID_LOG_KEY_FIELD, + ApiTracingLayer, FmtStripVeilidFields, TryIntoIterVeilidLogDirective, VeilidLayerFilter, + VeilidLayerFilterConfig, VeilidLayerLogKeyFilter, VeilidLogDirective, VeilidLogKey, + VeilidLogKeyFilterMode, VEILID_LOG_KEY_FIELD, }; #[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))] pub use self::logging::{LogOutput, LogOutputKind, VeilidTracing}; @@ -187,6 +187,9 @@ mod veilid_capnp { clippy::unused_async, clippy::ptr_cast_constness )] + // capnp emits `pub` everywhere; this module is crate-only, and capnp's own trait impls + // on the generated types are what make them externally reachable + #![allow(unnameable_types)] include!("../proto/veilid_capnp.rs"); } diff --git a/veilid-core/src/logging/veilid_layer_filter/log_directive.rs b/veilid-core/src/logging/veilid_layer_filter/log_directive.rs index 71e84732..48ee3eb1 100644 --- a/veilid-core/src/logging/veilid_layer_filter/log_directive.rs +++ b/veilid-core/src/logging/veilid_layer_filter/log_directive.rs @@ -216,7 +216,13 @@ impl IntoIterator for VeilidLogDirective { } } +/// What the `try_*_directives` entry points accept: either a single [`VeilidLogDirective`] or +/// anything iterable whose items convert into one, so a `Vec<&str>`, a `Vec` or a list +/// of directives are all valid. pub trait TryIntoIterVeilidLogDirective { + /// Convert into a directive iterator. + /// + /// Errors `VeilidAPIError::ParseError` if any item is not a valid directive. fn try_into_iter(self) -> VeilidAPIResult>; } diff --git a/veilid-core/src/routing_table/route_spec_store/route_set_id.rs b/veilid-core/src/routing_table/route_spec_store/route_set_id.rs index 55ba61b9..8de27e55 100644 --- a/veilid-core/src/routing_table/route_spec_store/route_set_id.rs +++ b/veilid-core/src/routing_table/route_spec_store/route_set_id.rs @@ -8,18 +8,12 @@ use super::*; #[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)] #[serde(transparent)] #[must_use] -pub struct AllocatedRouteSetId(RouteId); +pub(crate) struct AllocatedRouteSetId(RouteId); impl AllocatedRouteSetId { pub fn from_route_id(id: RouteId) -> Self { Self(id) } - pub fn as_route_id(&self) -> &RouteId { - &self.0 - } - pub fn into_route_id(self) -> RouteId { - self.0 - } } impl From for AllocatedRouteSetId { @@ -47,18 +41,12 @@ impl fmt::Display for AllocatedRouteSetId { #[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)] #[serde(transparent)] #[must_use] -pub struct RemoteRouteSetId(RouteId); +pub(crate) struct RemoteRouteSetId(RouteId); impl RemoteRouteSetId { pub fn from_route_id(id: RouteId) -> Self { Self(id) } - pub fn as_route_id(&self) -> &RouteId { - &self.0 - } - pub fn into_route_id(self) -> RouteId { - self.0 - } } impl From for RemoteRouteSetId { diff --git a/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_transactions/inbound_transaction_id.rs b/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_transactions/inbound_transaction_id.rs index 8142e704..a9b58ff4 100644 --- a/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_transactions/inbound_transaction_id.rs +++ b/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_transactions/inbound_transaction_id.rs @@ -5,7 +5,7 @@ impl_veilid_log_facility!("stor"); /// An individual transaction id #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] #[serde(transparent)] -pub struct InboundTransactionId(u64); +pub(crate) struct InboundTransactionId(u64); impl InboundTransactionId { pub(super) fn new(raw_id: u64) -> VeilidAPIResult { diff --git a/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_transactions/mod.rs b/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_transactions/mod.rs index fb8bedbe..3c60e707 100644 --- a/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_transactions/mod.rs +++ b/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_transactions/mod.rs @@ -6,7 +6,7 @@ mod inbound_transaction_list; use super::*; pub use inbound_transaction::*; -pub use inbound_transaction_id::*; +pub(crate) use inbound_transaction_id::*; pub use inbound_transaction_id_allocator::*; pub use inbound_transaction_list::*; diff --git a/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_watches/inbound_watch_id.rs b/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_watches/inbound_watch_id.rs index ad64ae76..6fd92836 100644 --- a/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_watches/inbound_watch_id.rs +++ b/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_watches/inbound_watch_id.rs @@ -3,7 +3,7 @@ use super::*; /// An individual watch id #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] #[serde(transparent)] -pub struct InboundWatchId(u64); +pub(crate) struct InboundWatchId(u64); impl InboundWatchId { pub(super) fn new(raw_id: u64) -> VeilidAPIResult { diff --git a/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_watches/mod.rs b/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_watches/mod.rs index 2ff5aa94..a0dee336 100644 --- a/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_watches/mod.rs +++ b/veilid-core/src/storage_manager/record_store/record_store_inner/inbound_watches/mod.rs @@ -6,7 +6,7 @@ mod inbound_watch_list; use super::*; use inbound_watch::*; -pub use inbound_watch_id::*; +pub(crate) use inbound_watch_id::*; pub use inbound_watch_id_allocator::*; pub use inbound_watch_list::*; diff --git a/veilid-core/src/storage_manager/record_store/record_store_inner/limited_size.rs b/veilid-core/src/storage_manager/record_store/record_store_inner/limited_size.rs index ebbc9b99..9ad97117 100644 --- a/veilid-core/src/storage_manager/record_store/record_store_inner/limited_size.rs +++ b/veilid-core/src/storage_manager/record_store/record_store_inner/limited_size.rs @@ -4,7 +4,7 @@ use num_traits::{PrimInt, Unsigned}; impl_veilid_log_facility!("stor"); #[derive(ThisError, Debug, Clone, Eq, PartialEq)] -pub enum ConcurrencyError { +pub(crate) enum ConcurrencyError { #[error("ConcurrentAccess({description})")] ConcurrentAccess { description: String }, } @@ -15,7 +15,7 @@ impl From for VeilidAPIError { } #[derive(ThisError, Debug, Clone, Copy, Eq, PartialEq)] -pub enum LimitError +pub(crate) enum LimitError where T: PrimInt + Unsigned + fmt::Display + fmt::Debug, { @@ -34,11 +34,9 @@ where } #[derive(ThisError, Debug, Clone, Copy, Eq, PartialEq)] -pub enum NumericError { +pub(crate) enum NumericError { #[error("Overflow(current={current},added={added})")] Overflow { current: T, added: T }, - #[error("Underflow(current={current},removed={removed})")] - Underflow { current: T, removed: T }, } impl From> for VeilidAPIError where diff --git a/veilid-core/src/veilid_api/types/fourcc.rs b/veilid-core/src/veilid_api/types/fourcc.rs index a0fa2ada..57a3407d 100644 --- a/veilid-core/src/veilid_api/types/fourcc.rs +++ b/veilid-core/src/veilid_api/types/fourcc.rs @@ -1,7 +1,10 @@ /// Define a named four-character-code newtype wrapping `[u8; 4]`, with /// conversions to and from `String` and the raw byte array. +/// +/// `$vis` is the type's visibility: the conversions below are impls of public traits, so a +/// `pub` code is reachable from outside the crate and must be re-exported to stay nameable. macro_rules! fourcc_type { - ($name:ident) => { + ($vis:vis $name:ident) => { pastey::paste! { /// A four-character code #[derive( @@ -25,7 +28,7 @@ macro_rules! fourcc_type { tsify(type_suffix = "Inner"), )] #[cfg_attr(feature = "json-camel-case", serde(rename_all = "camelCase"))] - pub struct $name(#[cfg_attr(all(target_arch = "wasm32", target_os = "unknown"),tsify(type = "string"))] [u8; 4]); + $vis struct $name(#[cfg_attr(all(target_arch = "wasm32", target_os = "unknown"),tsify(type = "string"))] [u8; 4]); impl $name { /// Make a code from four bytes. @@ -34,6 +37,7 @@ macro_rules! fourcc_type { } /// Get the four bytes of the code. #[must_use] + #[allow(dead_code, reason = "uniform accessor; not every code's callers need it")] pub fn bytes(&self) -> &[u8; 4] { &self.0 } diff --git a/veilid-core/src/veilid_api/types/veilid_capability.rs b/veilid-core/src/veilid_api/types/veilid_capability.rs index 5fede885..8fa94c66 100644 --- a/veilid-core/src/veilid_api/types/veilid_capability.rs +++ b/veilid-core/src/veilid_api/types/veilid_capability.rs @@ -1,6 +1,6 @@ use super::*; -fourcc_type!(VeilidCapability); +fourcc_type!(pub VeilidCapability); /// Node can relay private routes for other nodes. pub const VEILID_CAPABILITY_ROUTE: VeilidCapability = VeilidCapability::new(*b"ROUT"); diff --git a/veilid-remote-api/smoketest/Cargo.lock b/veilid-remote-api/smoketest/Cargo.lock index 0c808139..c3edf49b 100644 --- a/veilid-remote-api/smoketest/Cargo.lock +++ b/veilid-remote-api/smoketest/Cargo.lock @@ -638,9 +638,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" +checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" dependencies = [ "clap_builder", "clap_derive", @@ -648,9 +648,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" +checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" dependencies = [ "anstream", "anstyle", @@ -660,9 +660,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.4" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" +checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" dependencies = [ "heck", "proc-macro2", @@ -672,9 +672,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" +checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" [[package]] name = "cmov" @@ -2519,9 +2519,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.44" +version = "0.23.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6725596c3f2c3a0aef021139e145d4eafe314a6623e4680ca83852b2c67ab2ba" +checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" dependencies = [ "log", "once_cell", diff --git a/veilid-server/src/settings.rs b/veilid-server/src/settings.rs index ba361798..880bb488 100644 --- a/veilid-server/src/settings.rs +++ b/veilid-server/src/settings.rs @@ -152,7 +152,7 @@ pub fn load_config(cfg: config::Config, config_file: &Path) -> EyreResult