246
Productivity of Rust teams at Google
(programming.dev)
Welcome to the Rust community! This is a place to discuss about the Rust programming language.
Credits
It sort of has nil. While a type can be
null
orundefined
when evaluated,nil
is used in many of the JS libraries and frameworks to mean something that is eithernull
orundefined
. So you'll see functions likefunction isNil(value) { return value == null || value == undefined }
and they'll sometimes often confuse things even more be actually defining anil
value that's just an alias fornull
which is just pointlessly confusing.As an aside, basically every language under the sun has
NaN
as it's part of the IEEE floating point standard. JavaScript just confuses the situation more than most because it's weakly typed so it doesn't differentiate between integers, floats, or some other type like an array, string, or object. Hence anything in JS can be a NaN even though it really only has meaning for a floating point value.function isNil(value)
We instead have
function isNullOrUndefined(value) ...
instead, but it does the same thing.It's especially lame since you can't just do
if (!value) ...
since that includes 0 (but not[]
or{}
, which Python considers falsey). It's remarkably inconsistent...Yup, but you can use
NotNan
in Rust, just like yourNonNull
example.And yeah, it's weird that JavaScript doesn't have an integer type, everything is just floating point all the way down. I actually did some bitwise logic with JavaScript (wrote a tar implementation for the web), and you get into weird situations where you need to
>>> 0
in order to get an unsigned 32-bit integer (e.g.(1 << 31) >>> 0
). Those hacks really shouldn't be necessary...Because it's floating point it also causes some REALLY strange bounds on integers. The maximum sized int you can safely store in JS is a 53 bit integer. That caused us all kinds of headaches when we tried to serialize a 64 bit integer and it started producing garbage results for very large values.