std_tools 0.1.4

Collection of general purpose tools for solving problems. Fundamentally extend the language without spoiling, so may be used solely or in conjunction with another module of such kind.
Documentation
use super::*;

//

tests_impls!
{

  fn same_ptr()
  {

    let src1 = "abc";
    let src2 = "abc";
    a_true!( TheModule::same_ptr( src1, src2 ) );

    let src1 = ( 1, );
    let src2 = ( 1, );
    a_false!( TheModule::same_ptr( &src1, &src2 ) );

    let src1 = ( 1 );
    let src2 = "abcde";
    a_false!( TheModule::same_ptr( &src1, src2 ) );

  }

  //

  fn same_size()
  {

    let src1 = "abc";
    let src2 = "cba";
    a_true!( TheModule::same_size( src1, src2 ) );

    let src1 = ( 1, );
    let src2 = ( 3, );
    a_true!( TheModule::same_size( &src1, &src2 ) );

    let src1 = ( 1 );
    let src2 = "abcde";
    a_false!( TheModule::same_size( &src1, src2 ) );

  }

  //

  fn same_region()
  {

    let src1 = "abc";
    let src2 = "abc";
    a_true!( TheModule::same_region( src1, src2 ) );

    let src1 = ( 1, );
    let src2 = ( 1, );
    a_false!( TheModule::same_region( &src1, &src2 ) );

    let src1 = ( 1 );
    let src2 = "abcde";
    a_false!( TheModule::same_region( &src1, src2 ) );

  }

  //

  fn samples()
  {
    use TheModule as mem;

    // Are two pointers are the same, not taking into accoint type.
    // Unlike `std::ptr::eq()` does not require arguments to have the same type.
    let src1 = ( 1, );
    let src2 = ( 1, );
    assert!( !mem::same_ptr( &src1, &src2 ) );

    // Are two pointers points on data of the same size.
    let src1 = "abc";
    let src2 = "cba";
    assert!( mem::same_size( src1, src2 ) );

    // Are two pointers points on the same region, ie same size and same pointer.
    // Does not require arguments to have the same type.
    let src1 = "abc";
    let src2 = "abc";
    assert!( mem::same_region( src1, src2 ) );

  }

}

//

tests_index!
{
  same_ptr,
  same_size,
  same_region,
  samples,
}