Skip to content

Releases: rodrimati1992/typewit

1.9.0 release

06 Jan 07:22
2d79ba0
Compare
Choose a tag to compare

This release deprecates TypeCmp::with_any and TypeNe::with_any due to an unsoundness bug.

Changelog

1.9.0

Deprecated {TypeCmp, TypeNe}::with_any due to unsoundness: both constructors rely on TypeId::of::<L>() != TypeId::of::<R>() implying L != R, which is not true in the general case.

1.8.0 release

05 Oct 06:16
Compare
Choose a tag to compare

This release includes many new features, with these as the main ones:

  • injective type-level functions
  • TypeCmp enum for representing "TypeEq or TypeNe"
  • Parity of TypeEq APIs in TypeNe
  • more generic free function equivalents of TypeCmp/TypeEq/TypeNe methods in methods module

Changelog

The changes since the 1.7 version

1.8

Added "rust_1_65" feature

Added BaseTypeWitness trait, which requires "rust_1_61" feature.

Added MetaBaseTypeWit enum, which requires "rust_1_61" feature.

Added these items to type_fn module:

  • InjTypeFn trait
  • RevTypeFn trait
  • FnRev type-level function
  • CallInjFn type alias
  • UncallFn type alias

Added inj_type_fn macro

Added reexport of these in type_fn module:

  • inj_type_fn macro
  • type_fn macro

Added TypeCmp enum

Added these associated items to TypeEq:

  • with_any constructor
  • to_cmp method
  • unmap method
  • unproject method

Added type_ne macro

Added these associated items to TypeNe:

  • with_any constructor
  • with_fn constructor
  • to_cmp method
  • flip method
  • join_left method
  • join_right method
  • map method
  • project method
  • unmap method
  • unproject method
  • in_mut method
  • in_ref method
  • in_array method (requires "rust_1_61" feature)
  • zip method (requires "rust_1_61" feature)
  • zip3 method (requires "rust_1_61" feature)
  • zip4 method (requires "rust_1_61" feature)

Removed the need to enable "const_marker" feature to enable const_marker module.

Added equals method to all marker types in const_marker module.

Deprecated eq methods of all marker types in const_marker module.

Added type_constructors module, which requires "rust_1_65" and includes these items:

  • BaseTypeWitnessTc trait
  • TcTypeCmp struct
  • TcTypeEq struct
  • TcTypeNe struct
  • BaseTypeWitnessReparam type alias
  • BaseTypeWitnessToTc type alias
  • MapBaseTypeWitness type alias
  • TcToBaseTypeWitness type alias

Added methods module, which requires "rust_1_65" and includes these items:

  • zipping module
  • in_array function
  • zip2 function
  • zip3 function
  • zip4 function

The methods::zipping submodule (which requires "rust_1_65") contains:

  • Zip2 trait
  • Zip3 trait
  • Zip4 trait
  • Zip2Out type alias
  • Zip3Out type alias
  • Zip4Out type alias

Added type_ne module, which contains:

  • reexport of TypeNe
  • reexport of type_ne macro
  • LeftArg marker type
  • RightArg marker type

Added typewit_proc_macros optional dependency.

Added "proc_macros" feature, enabled by default, which enables typewit_proc_macros dependency.

1.7.0

10 Sep 16:48
1c2c2d2
Compare
Choose a tag to compare

This release adds a polymatch macro.

(don't know how it took me until this release to start marking the releases on GitHub)

Changelog

All of the changelog up to this point.

1.0

1.7.0

Added polymatch macro.

1.6.0

Added "adt_const_marker" feature.

Added BoolWit in typewit::const_marker

Added these structs in typewit::const_marker(under the "adt_const_marker" feature):

  • Str (unit struct)

Added these structs in typewit::const_marker::slice(under the "adt_const_marker" feature):

  • BoolSlice (unit struct)
  • CharSlice (unit struct)
  • I8Slice (unit struct)
  • I16Slice (unit struct)
  • I32Slice (unit struct)
  • I64Slice (unit struct)
  • I128Slice (unit struct)
  • IsizeSlice (unit struct)
  • StrSlice (unit struct)
  • U8Slice (unit struct)
  • U16Slice (unit struct)
  • U32Slice (unit struct)
  • U64Slice (unit struct)
  • U128Slice (unit struct)
  • UsizeSlice (unit struct)

Changed "nightly_mut_refs*" crate feature to enable the "rust_stable" feature.

1.5.0

Added support for these to simple_type_witness macro:

  • Generic parameters using < > syntax
  • Non-[ ]-surrounded where clauses
  • #[cfg(...)] attributes on variants and generic parameters
  • Using __Wit in constraints.
  • Defaulted generic parameters (only used for defaulting generic arguments in MakeTypeWitness impls)

Added support for #[cfg(...)] attributes on generic parameters to type_fn macro.

1.4.0

Added Identity trait

1.3.0

Added type_fn macro.

1.2.0

Added "const_marker" feature, enabled by the default feature.

Added const_marker module, conditional on "const_marker" feature, with these items:

  • Bool (unit struct)
  • Char (unit struct)
  • I128 (unit struct)
  • I16 (unit struct)
  • I32 (unit struct)
  • I64 (unit struct)
  • I8 (unit struct)
  • Isize (unit struct)
  • U128 (unit struct)
  • U16 (unit struct)
  • U32 (unit struct)
  • U64 (unit struct)
  • U8 (unit struct)
  • Usize (unit struct)

Every type in const_marker defines an eq method, and implement Copy + Clone + Debug.

Added TypeNe type, with a new_unchecked constructor function.
TypeNe implements Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd.

Added TypeEq::{in_array, zip, zip3, zip4} methods

Added typewit::type_fn::FnIdentity type-level function.

1.1.0

Reduced Minimum Supported Rust Version to 1.57.0

Added "rust_stable" and "rust_1_61" features

Added type_fn::Invoke struct, which implements TypeFn.

Removed blanket impl of TypeFn for Fn(minor breaking change)

1.0.0

Declared TypeEq struct, with these associated items:

  • NEW (associated constant)
  • flip (method)
  • in_box (method)
  • in_mut (method)
  • in_ref (method)
  • join (method)
  • map (method)
  • new (method)
  • new_unchecked (method)
  • project (method)
  • reachability_hint (method)
  • to_left (method)
  • to_right (method)
    TypeEq implements Clone, Copy, Debug, Default, Eq, Hash, MakeTypeWitness, Ord, PartialEq, PartialOrd, TypeWitnessTypeArg.

Declared type_eq function.

Declared HasTypeWitness, MakeTypeWitness, TypeWitnessTypeArg traits.

Declared simple_type_witness macro.

Declared type_fn module with these items:

  • TypeFn trait
  • CallFn type alias
  • GBox (structs), this implements TypeFn
  • GRef (structs), this implements TypeFn
  • GRefMut (structs), this implements TypeFn

Declared these crate features:

  • alloc
  • mut_refs
  • nightly_mut_refs

Set the Minimum Supported Rust Version to 1.61.0