ethercrab 0.7.0

A pure Rust EtherCAT MainDevice supporting std and no_std environments
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.85"
name = "ethercrab"
version = "0.7.0"
build = false
exclude = [
    "dumps",
    "doc",
    "NOTES.md",
    "SPECNOTES.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A pure Rust EtherCAT MainDevice supporting std and no_std environments"
documentation = "https://docs.rs/ethercrab"
readme = "README.md"
keywords = [
    "ethercat",
    "beckhoff",
    "automation",
    "fieldbus",
    "robotics",
]
categories = [
    "science::robotics",
    "no-std",
    "network-programming",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/ethercrab-rs/ethercrab"
resolver = "2"

[package.metadata.docs.rs]
default-target = "x86_64-unknown-linux-gnu"
targets = [
    "x86_64-unknown-linux-gnu",
    "x86_64-pc-windows-gnu",
]

[features]
default = ["std"]
defmt = [
    "dep:defmt",
    "embedded-io-async/defmt-03",
    "heapless/defmt-03",
    "ethercrab-wire/defmt-03",
]
log = ["dep:log"]
serde = [
    "dep:serde",
    "bitflags/serde",
]
std = [
    "dep:pnet_datalink",
    "dep:async-io",
    "log",
    "futures-lite/std",
    "embedded-io-async/std",
    "ethercrab-wire/std",
    "spin/std",
]
xdp = ["dep:xsk-rs"]

[lib]
name = "ethercrab"
path = "src/lib.rs"

[[example]]
name = "dc"
path = "examples/dc.rs"
required-features = ["std"]

[[example]]
name = "dc-lan9252-groups"
path = "examples/dc-lan9252-groups.rs"

[[example]]
name = "discover"
path = "examples/discover.rs"

[[example]]
name = "dump-eeprom"
path = "examples/dump-eeprom.rs"

[[example]]
name = "ek1100"
path = "examples/ek1100.rs"
required-features = ["std"]

[[example]]
name = "el3702-oversampling"
path = "examples/el3702-oversampling.rs"

[[example]]
name = "io-uring"
path = "examples/io-uring.rs"

[[example]]
name = "multiple-groups"
path = "examples/multiple-groups.rs"
required-features = ["std"]

[[example]]
name = "pdi-and-sdo"
path = "examples/pdi-and-sdo.rs"

[[example]]
name = "performance"
path = "examples/performance.rs"

[[example]]
name = "release"
path = "examples/release.rs"

[[example]]
name = "sdo-info"
path = "examples/sdo-info.rs"

[[example]]
name = "smol-io-uring"
path = "examples/smol-io-uring.rs"

[[example]]
name = "windows"
path = "examples/windows.rs"

[[example]]
name = "xdp"
path = "examples/xdp.rs"
required-features = [
    "std",
    "xdp",
]

[[test]]
name = "init-must-be-send"
path = "tests/init-must-be-send.rs"

[[test]]
name = "replay-dc"
path = "tests/replay-dc.rs"

[[test]]
name = "replay-ek1100-alias-address"
path = "tests/replay-ek1100-alias-address.rs"

[[test]]
name = "replay-ek1100-el2828-el2889"
path = "tests/replay-ek1100-el2828-el2889.rs"

[[test]]
name = "replay-ek1914-el3004-configure"
path = "tests/replay-ek1914-el3004-configure.rs"

[[test]]
name = "replay-ek1914-el3004-mailbox"
path = "tests/replay-ek1914-el3004-mailbox.rs"

[[test]]
name = "replay-ek1914-no-complete-access"
path = "tests/replay-ek1914-no-complete-access.rs"

[[test]]
name = "replay-ek1914-segmented-upload"
path = "tests/replay-ek1914-segmented-upload.rs"

[[test]]
name = "replay-issue-255"
path = "tests/replay-issue-255.rs"

[[test]]
name = "util"
path = "tests/util.rs"

[[bench]]
name = "frame"
path = "benches/frame.rs"
harness = false

[[bench]]
name = "pdu_loop"
path = "benches/pdu_loop.rs"
harness = false

[dependencies.async-io]
version = "2.0.0"
optional = true

[dependencies.atomic-waker]
version = "1.1.2"

[dependencies.atomic_enum]
version = "0.3.0"

[dependencies.bitflags]
version = "2.9.0"

[dependencies.crc]
version = "3.2.1"
default-features = false

[dependencies.defmt]
version = "0.3.5"
optional = true

[dependencies.embassy-time]
version = "0.4.0"

[dependencies.embedded-io-async]
version = "0.6.0"
default-features = false

[dependencies.ethercrab-wire]
version = "0.3.0"

[dependencies.futures-lite]
version = "2.0.0"
default-features = false

[dependencies.heapless]
version = "0.8.0"

[dependencies.lock_api]
version = "0.4.13"

[dependencies.log]
version = "0.4.27"
optional = true
default-features = false

[dependencies.sealed]
version = "0.6.0"

[dependencies.serde]
version = "1.0.190"
features = ["derive"]
optional = true

[dependencies.smlang]
version = "0.8.0"

[dependencies.spin]
version = "0.10.0"
features = [
    "lock_api",
    "rwlock",
]
default-features = false

[dev-dependencies.arbitrary]
version = "1.3.1"
features = ["derive"]

[dev-dependencies.cassette]
version = "0.3.0"

[dev-dependencies.core_affinity]
version = "0.8.1"

[dev-dependencies.criterion]
version = "0.5.1"
features = ["cargo_bench_support"]
default-features = false

[dev-dependencies.csv]
version = "1.3.0"

[dev-dependencies.env_logger]
version = "0.11.6"

[dev-dependencies.heckcheck]
version = "2.0.1"

[dev-dependencies.pcap-file]
version = "2.0.0"

[dev-dependencies.pretty_assertions]
version = "1.4.0"

[dev-dependencies.quanta]
version = "0.12.3"

[dev-dependencies.savefile]
version = "0.18.5"
default-features = false

[dev-dependencies.savefile-derive]
version = "0.18.5"
default-features = false

[dev-dependencies.serde]
version = "1.0.190"
features = ["derive"]
default-features = false

[dev-dependencies.signal-hook]
version = "0.3.17"

[dev-dependencies.simple_logger]
version = "5.0.0"
default-features = false

[dev-dependencies.smol]
version = "2.0.0"

[dev-dependencies.smoltcp]
version = "0.12.0"
features = [
    "medium-ethernet",
    "proto-ipv4",
    "socket-raw",
]
default-features = false

[dev-dependencies.spin_sleep]
version = "1.2.1"

[dev-dependencies.ta]
version = "0.5.0"

[dev-dependencies.thread-priority]
version = "1.2.0"

[dev-dependencies.tokio]
version = "1.33.0"
features = [
    "rt-multi-thread",
    "macros",
    "sync",
    "time",
]

[target.'cfg(target_os = "linux")'.dependencies.io-uring]
version = "0.7.4"

[target.'cfg(target_os = "linux")'.dependencies.slab]
version = "0.4.12"

[target.'cfg(target_os = "linux")'.dependencies.smallvec]
version = "1.13.1"
features = ["const_generics"]

[target.'cfg(target_os = "linux")'.dependencies.timerfd]
version = "1.5.0"

[target.'cfg(target_os = "linux")'.dependencies.xsk-rs]
version = "0.8.0"
optional = true

[target.'cfg(target_os = "windows")'.dependencies.pcap]
version = "2.2.0"

[target.'cfg(target_os = "windows")'.dependencies.pnet_datalink]
version = "0.35.0"
features = ["std"]
optional = true

[target."cfg(unix)".dependencies.libc]
version = "0.2.180"

[target."cfg(unix)".dependencies.nix]
version = "0.31.1"
features = ["net"]

[profile.profiling]
debug = 2
inherits = "release"