Tracking Issue for signed bigint helper methods

Feature gate: #![feature(signed_bigint_helpers)]

This issue continues discussion #85532 with the following methods on integers:

  • uN::carrying_mul_add_signed
  • iN::carrying_add
  • iN::borrowing_sub
  • iN::carrying_mul
  • iN::carrying_mul_add
  • iN::carrying_mul_add_unsigned
impl uN {
    /// `add += self * rhs + carry`, covers full `i2N` range exactly
    fn carrying_mul_add_signed(self, rhs: iN, carry: Self, add: iN) -> (Self, iN);
}

impl iN {
    /// `self + rhs + carry`
    fn carrying_add(self, rhs: Self, carry: bool) -> (Self, bool);
    
    /// `self - rhs - carry`
    fn borrowing_sub(self, rhs: Self, carry: bool) -> (Self, bool);
    
    /// `self * rhs + carry`
    fn carrying_mul(self, rhs: Self, carry: Self) -> (uN, Self);
    
    /// `add += self * rhs + carry`, fits `i2N` range, but doesn't cover it fully
    fn carrying_mul_add(self, rhs: Self, carry: Self, add: Self) -> (uN, Self);
    
    /// `add += self * rhs + carry`, covers full `i2N` range exactly
    fn carrying_mul_add_unsigned(self, rhs: uN, carry: Self, add: uN) -> (uN, Self);
}