Rust数学错误

I have following code in Rust:

fn main() {

    let mut sum = 0is;
    for i in (0is..100000000is) {
        sum = sum + i;
    }
    println! ("{}", sum);
}

as a result, I have 4999999950000000

But, when I try to check this code with Golang and Ruby - I see another result

golang version:

package main

import "fmt"

func main() {
  var sum = 0
  for i := 1; i < 99999999; i++ {
      sum += i
  }

  fmt.Println(sum)
}

Ruby version:

@sum = 0
(1...99999999).each do |i|
  @sum += i
end

puts @sum

and the result for both Ruby and Golang is 4999999850000001

PS: yep, I know about difference between 100000000 and 99999999 - it's because of inclusion right part in Rust in 0is..100000000is

You are not summing the last element (99999999) in Go and Ruby:

func main() {
    var sum = int64(0)
    for i := int64(1); i <= 99999999; i++ {
        sum += i
    }
    fmt.Println(sum)
}

4999999950000000