Skip to main content

Cable

Struct Cable 

Source
pub struct Cable {
    pub data: DataClass,
    pub emarker: bool,
    pub declared_amps: f64,
    pub length_m: f64,
}
Expand description

A cable as it physically exists, not as it is marketed.

Fields§

§data: DataClass§emarker: bool

Whether an e-marker chip is present in the plug.

§declared_amps: f64

Current the e-marker declares, in amps. Ignored when emarker is false.

§length_m: f64

Implementations§

Source§

impl Cable

Source

pub fn allowed_amps(&self) -> f64

Current the cable is permitted to carry, in amps.

Without an e-marker the ceiling is 3 A no matter how thick the copper is. This is a protocol limit, not a thermal one — the source has no way to learn the cable is capable, so it must assume it is not.

Source

pub fn max_watts_at(&self, volts: f64) -> f64

Maximum power the cable can pass at a given negotiated voltage, in watts.

Source

pub fn can_deliver(&self, target_watts: f64, volts: f64) -> bool

Whether the cable can reach a target wattage at a given voltage.

Source

pub fn passive_length_is_plausible(&self) -> bool

Whether passive operation is plausible at this length for the data class.

Signal loss scales with length and with frequency, so the faster the class the shorter the passive cable can be. A 3 m 40 Gbps cable exists, but it contains active signal conditioning and costs accordingly — which is why long “Thunderbolt” cables are expensive and short ones are not.

Trait Implementations§

Source§

impl Clone for Cable

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Cable

Source§

impl Debug for Cable

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Cable

§

impl RefUnwindSafe for Cable

§

impl Send for Cable

§

impl Sync for Cable

§

impl Unpin for Cable

§

impl UnsafeUnpin for Cable

§

impl UnwindSafe for Cable

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.