[F42] cargo doc --workspace --no-deps clean (0 warnings)

Fix all 33 rustdoc warnings across the workspace:

- Unresolved intra-doc links: rewrite [`name`] → either backtick text
  (when not actually a link) or fully-qualified `[Type::method]` /
  `[crate::module::name]` form. Affected: mxaccess-codec
  (asb_variant, item_control, metadata_query, observed_write_template,
  reference_handle, write_message), mxaccess-rpc (pdu), mxaccess-nmx
  (client), mxaccess-asb-nettcp (nmf), mxaccess-callback (exporter),
  mxaccess (asb_session, session, lib).
- Bracket-text being interpreted as link refs (e.g. `body[17]` →
  `` `body[17]` ``).
- Private-item references in public docs (CALLBACK_BROADCAST_CAPACITY,
  recover_connection_core, mxvalue_to_writevalue) reduced to
  backtick-text since they aren't part of the public API.

`RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps` now
exits clean. Workspace 759 tests pass; clippy clean.

Defers `#![warn(missing_docs)]` lint to a future pass — the cleanup
target is the broken-link warnings, which are signal; missing-docs
would surface hundreds of low-priority public-item gaps that are out
of scope for this F-number.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Joseph Doherty
2026-05-06 04:39:51 -04:00
parent 34045c2f6d
commit e79e289743
13 changed files with 36 additions and 35 deletions
+1 -1
View File
@@ -220,7 +220,7 @@ impl NmfRecord {
}
/// Encode to a fresh buffer. Convenience wrapper around
/// [`encode_into`].
/// [`Self::encode_into`].
pub fn encode(&self) -> Result<Vec<u8>, NmfError> {
let mut out = Vec::new();
self.encode_into(&mut out)?;
@@ -18,10 +18,9 @@
//! - `INmxSvcCallback` (IID `B49F92F7-C748-4169-8ECA-A0670B012746`,
//! `NmxProcedureMetadata.cs:6`) — opnums 3 (`DataReceived`),
//! 4 (`StatusReceived`). The handler decodes the inbound buffer via
//! [`crate::nmx_callback_messages::parse_callback_request`] (re-export
//! from `mxaccess-rpc::nmx_callback_messages`), emits a typed event,
//! and returns the success response built by
//! [`crate::nmx_callback_messages::encode_callback_response`].
//! [`mxaccess_rpc::nmx_callback_messages::parse_callback_request`],
//! emits a typed event, and returns the success response built by
//! [`mxaccess_rpc::nmx_callback_messages::encode_callback_response`].
//!
//! Auth3 PDUs are accepted but ignored (`ManagedCallbackExporter.cs:133-137`)
//! — NTLM packet integrity for inbound frames is not yet wired (open
@@ -154,7 +154,7 @@ impl AsbVariant {
}
}
/// Standalone encode: convenience wrapper around [`encode_into`].
/// Standalone encode: convenience wrapper around [`Self::encode_into`].
pub fn encode(&self) -> Vec<u8> {
let mut out = Vec::with_capacity(self.wire_len());
self.encode_into(&mut out);
@@ -2,7 +2,7 @@
//!
//! Direct port of `src/MxNativeCodec/NmxItemControlMessage.cs`. The body
//! carries an advise-supervisory or unadvise command together with a 16-byte
//! item correlation GUID and a 14-byte projection of an [`MxReferenceHandle`]
//! item correlation GUID and a 14-byte projection of an [`crate::reference_handle::MxReferenceHandle`]
//! (handle bytes 6..20 — `object_id` through `attribute_index`).
//!
//! ## Wire layout
@@ -87,7 +87,7 @@ const PAYLOAD_LENGTH: usize = 18; // cs:28 — 7×u16 + u32 tail = 18 bytes
pub const DEFAULT_TAIL: u32 = 3;
/// Decoded NMX item-control body. The fields after `item_correlation_id`
/// project bytes 6..20 of an [`MxReferenceHandle`] — see
/// project bytes 6..20 of an [`crate::reference_handle::MxReferenceHandle`] — see
/// `NmxItemControlMessage.cs:71-81, 134-141`.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct NmxItemControlMessage {
@@ -1,7 +1,7 @@
//! `NmxMetadataQueryMessage` — observed pre-advise metadata-query body.
//!
//! Direct port of `src/MxNativeCodec/NmxMetadataQueryMessage.cs`. The .NET
//! reference exposes a single static helper, [`encode_observed_pre_advise`],
//! reference exposes a single static helper, `encode_observed_pre_advise`,
//! which returns a fixed observed body with a 16-byte item-correlation GUID
//! patched in at offset `0x8a`.
//!
@@ -44,7 +44,7 @@
//! `Encode` (`.cs:51-64`) writes:
//!
//! 1. The captured prefix (`_prefix`, raw bytes) — preserved verbatim.
//! 2. The freshly-encoded value bytes from [`encode_value`].
//! 2. The freshly-encoded value bytes from `encode_value_bytes`.
//! 3. The captured suffix (`_suffixBeforeWriteIndex`) — preserved verbatim.
//! 4. The fresh `writeIndex` as i32 LE in the trailing 4 bytes.
//!
@@ -167,12 +167,12 @@ impl ObservedWriteBodyTemplate {
}
}
/// Captured opcode at body[0]. Mirrors `_prefix[0]`.
/// Captured opcode at `body[0]`. Mirrors `_prefix[0]`.
pub fn command(&self) -> u8 {
self.command
}
/// Captured wire-kind byte at body[17]. Drawn from the captured prefix,
/// Captured wire-kind byte at `body[17]`. Drawn from the captured prefix,
/// not from the runtime [`MxValueKind`] (which can disambiguate
/// String vs DateTime past the encoder collapse).
pub fn wire_kind(&self) -> u8 {
@@ -34,8 +34,9 @@ const CRC16_IBM_POLYNOMIAL: u16 = 0xa001;
///
/// `object_signature` and `attribute_signature` are derived values. The Rust
/// port keeps them private — the only constructor that produces a handle from
/// names is [`from_names`]; the only mutators that update one signature are
/// [`with_object_tag_name`] and [`with_attribute_name`], which both
/// names is [`MxReferenceHandle::from_names`]; the only mutators that update
/// one signature are [`MxReferenceHandle::with_object_tag_name`] and
/// [`MxReferenceHandle::with_attribute_name`], which both
/// recompute. This is a deliberate tightening over the .NET reference (which
/// is a record with public init-only signature fields).
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
@@ -157,7 +158,7 @@ impl MxReferenceHandle {
/// # Panics
///
/// Panics if `destination.len() < 20`. Use a 20-byte slice or call
/// [`encode`] for a fresh buffer.
/// [`Self::encode`] for a fresh buffer.
pub fn write_to(self, destination: &mut [u8]) {
assert!(
destination.len() >= Self::ENCODED_LEN,
@@ -72,8 +72,8 @@
//! 28.. payload
//! ```
//!
//! The encoder writes `count` (u16) at body[22] and `element_width` (u16) at
//! body[24]. The decoder/subscription side reads `element_width` as `i32` at
//! The encoder writes `count` (u16) at `body[22]` and `element_width` (u16) at
//! `body[24]`. The decoder/subscription side reads `element_width` as `i32` at
//! a different offset — that asymmetry is documented in the subscription
//! message module, not here. Encoder element widths are 2/4/4/8 for
//! Boolean/Int32/Float32/Float64 arrays; for variable arrays (String,
+2 -2
View File
@@ -88,7 +88,7 @@ pub enum NmxClientError {
/// The metadata's `(mx_data_type, is_array)` pair has no LMX wire
/// encoding (e.g. arrays of `ElapsedTime`, scalars of
/// `ReferenceType`). Returned by [`NmxClient::resolve_write_kind`]
/// `ReferenceType`). Returned by [`GalaxyTagMetadata::resolve_write_kind`]
/// helpers when the caller asks for a kind that
/// [`mxaccess_codec::MxValueKind::for_data_type`] rejects.
/// Mirrors the `ArgumentOutOfRangeException` paths in the .NET
@@ -530,7 +530,7 @@ impl NmxClient {
}
/// `INmxService2::RemoveSubscriberEngine` (opnum 8). Mirrors
/// `cs:137-147`. Same wire shape as [`add_subscriber_engine`].
/// `cs:137-147`. Same wire shape as [`Self::add_subscriber_engine`].
///
/// # Errors
/// Transport or codec.
+3 -3
View File
@@ -539,7 +539,7 @@ impl BindPdu {
/// Encode the Bind / AlterContext PDU. Returns the wire bytes
/// (`DceRpcPdu.cs:264-290`). Sets `frag_length` and `auth_length=0` on
/// the encoded header — to attach an auth verifier use [`encode_with_auth`].
/// the encoded header — to attach an auth verifier use [`Self::encode_with_auth`].
pub fn encode(&self) -> Vec<u8> {
let length: usize = BIND_BODY_OFFSET
+ self
@@ -955,7 +955,7 @@ impl BindAckPdu {
///
/// The .NET `Encode` (`DceRpcPdu.cs:118-124`) defaults `packet_flags` to
/// `0x03` (PFC_FIRST_FRAG | PFC_LAST_FRAG) only when the supplied flags are
/// 0; the Rust port keeps the same exact behaviour in [`encode`].
/// 0; the Rust port keeps the same exact behaviour in [`RequestPdu::encode`].
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RequestPdu {
pub header: PduHeader,
@@ -1081,7 +1081,7 @@ pub struct ResponsePdu {
impl ResponsePdu {
/// Decode a Response PDU (`DceRpcPdu.cs:141-168`). The .NET reference
/// has no encoder for Response — the Rust port adds [`encode`] for tests
/// has no encoder for Response — the Rust port adds [`Self::encode`] for tests
/// and round-trip use.
pub fn decode(buf: &[u8]) -> Result<Self, RpcError> {
let header = PduHeader::decode(buf)?;
+8 -7
View File
@@ -21,14 +21,15 @@
//! Implements:
//! * [`AsbSession::connect`] — TCP connect → preamble → DH handshake
//! → ready session.
//! * [`AsbSession::register_items`] / [`unregister_items`] /
//! [`read`] / [`write`] — per-operation thin async wrappers.
//! * [`AsbSession::keep_alive`] / [`disconnect`] / [`shutdown`] —
//! lifecycle.
//! * [`AsbSession::register_items`] / [`AsbSession::unregister_items`] /
//! [`AsbSession::read`] / [`AsbSession::write`] — per-operation thin
//! async wrappers.
//! * [`AsbSession::keep_alive`] / [`AsbSession::disconnect`] /
//! `AsbSession::shutdown` — lifecycle.
//! * [`AsbSession::create_subscription`] /
//! [`add_monitored_items`] / [`publish`] /
//! [`delete_monitored_items`] / [`delete_subscription`] —
//! subscription primitives.
//! [`AsbSession::add_monitored_items`] / [`AsbSession::publish`] /
//! [`AsbSession::delete_monitored_items`] /
//! [`AsbSession::delete_subscription`] — subscription primitives.
//! * [`AsbSession::subscribe`] — returns an [`AsbSubscription`]
//! `Stream<Item = Result<MonitoredItemValue, Error>>` driven by a
//! background publish-loop. Drop of the stream aborts the loop.
+2 -2
View File
@@ -397,8 +397,8 @@ impl Session {
}
/// Write a value to a tag (`MxValue` overload). Delegates to
/// [`Self::write_value`] after converting `value` via
/// [`mxvalue_to_writevalue`].
/// [`Self::write_value`] after converting `value` via the private
/// `mxvalue_to_writevalue` helper.
///
/// # Errors
/// As for [`Self::write_value`], plus
+4 -4
View File
@@ -119,7 +119,7 @@ const CALLBACK_BROADCAST_CAPACITY: usize = 256;
/// ## Lag behavior
///
/// The underlying broadcast channel has a fixed capacity
/// ([`CALLBACK_BROADCAST_CAPACITY`]). Slow consumers that fall behind
/// (`CALLBACK_BROADCAST_CAPACITY`). Slow consumers that fall behind
/// receive `Some(Err(Error::Configuration(InvalidArgument)))` whose
/// detail string contains the lag-loss count. The stream stays open
/// and resumes from the next available message — same shape as
@@ -449,7 +449,7 @@ impl Session {
/// `(host, port, service_ipid)` before `RegisterEngine2`. This
/// constructor takes the resolved triple by hand — useful for
/// tests, deterministic probes, and non-Windows builds. Use
/// [`Self::connect_nmx_auto`] (Windows + `windows-com` feature) to
/// `Self::connect_nmx_auto` (Windows + `windows-com` feature) to
/// drive the auto-resolving path.
///
/// On success: a `RegisterEngine2` round-trip has completed and the
@@ -650,7 +650,7 @@ impl Session {
/// `RecoverConnectionCore` (`cs:442-474`).
///
/// Per attempt: emit [`RecoveryEvent::Started`], invoke
/// [`recover_connection_core`](Self::recover_connection_core) (rebuild
/// the private `recover_connection_core` helper (rebuild
/// the NMX transport via the installed [`RebuildFactory`], re-run
/// `RegisterEngine2` with the saved callback OBJREF, replay every
/// active subscription's `AdviseSupervisory`, atomically swap the
@@ -821,7 +821,7 @@ impl Session {
/// This accessor is the test seam + escape hatch consumers can use
/// today to observe the raw stream.
///
/// Receivers can lag by up to [`CALLBACK_BROADCAST_CAPACITY`]
/// Receivers can lag by up to `CALLBACK_BROADCAST_CAPACITY`
/// messages before the broadcast channel starts dropping; lagged
/// receivers see [`tokio::sync::broadcast::error::RecvError::Lagged`].
#[must_use]