Skip to content

JohnScience/just_prim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Marker traits for primitive types

This crate provides marker traits for primitive types:

Example

Cargo.toml

## ...

[dependencies]
just_prim = { version = "0.1.0" }

## ...

[features]

## https://doc.rust-lang.org/beta/unstable-book/language-features/marker-trait-attr.html
marker_trait_attr = ["just_prim/marker_trait_attr"]

src/main.rs

// Uncomment if you want to conditionally use the feature. Remove otherwise.
// #![cfg_attr(feature = "marker_trait_attr", feature(marker_trait_attr))]

use just_prim::Prim;

trait MyExtensionTraitForPrimTys: Prim {
    // ...
}

fn main() {}

Building, running, and testing

  • cargo build <other options> --features marker_trait_attr if you want the feature and cargo build <other options> otherwise;
  • cargo run<other options> --features marker_trait_attr if you want the feature and cargo build <other options> otherwise;
  • cargo test <other options> --features marker_trait_attr if you want the feature and cargo test <other options> otherwise.

Features

With marker_trait_attr Nightly feature, each of the provided traits also has #[marker] attribute which allows more optimal implementation of traits via two or more "overlapping" generic impl blocks. Without #[marker] attribute, the "overlapping" impl blocks would be conflicting.

Similar crates by the author:

  • epui - Equisized (primitive) unsigned ints for primitive ints: u8 for u8, u16 for i16, etc
  • epsi - Equisized (primitive) signed ints for primitive ints
  • primitive_promotion - Primitive promotions for primitive numeric types: u16 for u8, i32 for i16, f64 for f32, etc
  • is_signed_trait - Trait for IS_SIGNED associated constant
  • max_len_base_10_as_usize - Trait offering constant maximum lengths of primitive integers as usize
  • min_max_traits - Traits for MIN and MAX associated constants
  • as well as others that can be found on crates.io

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Marker traits for primitive types

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages