simple-si-units-core

Crates.iosimple-si-units-core
lib.rssimple-si-units-core
version1.0.1
sourcesrc
created_at2022-10-31 04:20:09.052124
updated_at2023-04-28 10:24:05.649004
descriptionThis is the shared dependencies for crate simple-si-units
homepagehttps://github.com/DrPlantabyte/simple-si-units
repositoryhttps://github.com/DrPlantabyte/simple-si-units
max_upload_size
id701877
size4,988
Chris Hall (DrPlantabyte)

documentation

https://docs.rs/simple-si-units-core/

README

simple-si-units-core

This crate exists to support the simple-si-units. Please go there for more information.

Contents

Crate simple-si-units-core exports the following:

NumLike

This is an ergonomic trait bundle that combines the following:

  • std::ops::Add
  • std::ops::AddAssign
  • std::ops::Sub
  • std::ops::SubAssign
  • std::ops::Mul
  • std::ops::MulAssign
  • std::ops::Div
  • std::ops::DivAssign
  • std::ops::Neg
  • Clone
  • std::fmt::Debug
  • std::fmt::Display

Thus you can use this trait as part of a struct or function template definition, like this:

use simple_si_units_core::NumLike;
pub struct MyUnit<DT: NumLike> {
    v: DT,
}

impl<DT: NumLike> std::ops::Add<Self> for MyUnit<DT> {
    type Output = Self;
    fn add(self, rhs: Self) -> Self::Output {
        return Self { v: self.v + rhs.v };
    }
}

impl<DT: NumLike> std::ops::Sub<Self> for MyUnit<DT> {
    type Output = Self;
    fn sub(self, rhs: Self) -> Self::Output {
        return Self { v: self.v - rhs.v };
    }
}

License

This library is open source, licensed under the Mozilla Public License version 2.0. In summary, you may include this source code as-is in both open-source and proprietary projects without requesting permission from me, but if you modify the source code from this library then you must make your modified version of this library available under an open-source license.

Commit count: 153

cargo fmt