Turns out all six of these impls are incorrect.
#[inline]
fn replace_one(&mut self) -> Self {
#[inline]
fn replace_one(&mut self) -> Self {
}
#[inline]
fn replace_zero(&mut self) -> Self {
}
#[inline]
fn replace_zero(&mut self) -> Self {
#[inline]
fn replace_one(&mut self) -> Self {
#[inline]
fn replace_one(&mut self) -> Self {
}
#[inline]
fn replace_zero(&mut self) -> Self {
}
#[inline]
fn replace_zero(&mut self) -> Self {
#[inline]
fn replace_one(&mut self) -> Self {
#[inline]
fn replace_one(&mut self) -> Self {
}
#[inline]
fn replace_zero(&mut self) -> Self {
}
#[inline]
fn replace_zero(&mut self) -> Self {
assert_eq!(&[2, 3, 1, 2, 0], &result[..]);
}
assert_eq!(&[2, 3, 1, 2, 0], &result[..]);
}
+#[test]
+fn test_step_replace_unsigned() {
+ let mut x = 4u32;
+ let y = x.replace_zero();
+ assert_eq!(x, 0);
+ assert_eq!(y, 4);
+
+ x = 5;
+ let y = x.replace_one();
+ assert_eq!(x, 1);
+ assert_eq!(y, 5);
+}
+
+#[test]
+fn test_step_replace_signed() {
+ let mut x = 4i32;
+ let y = x.replace_zero();
+ assert_eq!(x, 0);
+ assert_eq!(y, 4);
+
+ x = 5;
+ let y = x.replace_one();
+ assert_eq!(x, 1);
+ assert_eq!(y, 5);
+}
+
+#[test]
+fn test_step_replace_no_between() {
+ let mut x = 4u128;
+ let y = x.replace_zero();
+ assert_eq!(x, 0);
+ assert_eq!(y, 4);
+
+ x = 5;
+ let y = x.replace_one();
+ assert_eq!(x, 1);
+ assert_eq!(y, 5);
+}
\ No newline at end of file
#![feature(fixed_size_array)]
#![feature(flt2dec)]
#![feature(fmt_internals)]
#![feature(fixed_size_array)]
#![feature(flt2dec)]
#![feature(fmt_internals)]
#![feature(iter_rfind)]
#![feature(libc)]
#![feature(nonzero)]
#![feature(iter_rfind)]
#![feature(libc)]
#![feature(nonzero)]
#![feature(sort_internals)]
#![feature(sort_unstable)]
#![feature(step_by)]
#![feature(sort_internals)]
#![feature(sort_unstable)]
#![feature(step_by)]
#![feature(test)]
#![feature(try_from)]
#![feature(unicode)]
#![feature(test)]
#![feature(try_from)]
#![feature(unicode)]