I guess the assumed mental model here is that 0 would be both positive and negative. Here's where I'm coming from with this thought:
The section aims to explain the notion of "signed" based on writing down numbers on paper.
When writing down numbers on paper, you can write things with a sign, like +123 or -456 (in which case the sign explains the direction to move into from the origin [zero] to reach the number), or without one like 78 in which the convention is to assume it means +78.
Number encoding is based on the assumption that you either always write signs or never write signs. What "always writing signs" would mean for 0 is to write +0 or -0. Which both works (and unlike any other number, actually results in one and the same value).
More accurate terminology would probably be something like "with a plus sign" instead of "positive", and "with a minus sign" instead of "negative" if we really are discussing written sign prefixes.
Or course you are correct about the established mathematical definitions of "positive" or "negative". Indeed Rust itself is offering API that follows that convention correctly (as expected).
On the other hand, exposatory - beginner-friendly material sometimes needs to over-simply for understandability. We cannot possibly use the word "non-negative" here instead.
I could see a case for considering adding "or zero", so turning it into "positive or zero". It's not the most important thing to clarify though anyway since right after it in the book they even specify the exact ranges of every unsigned and signed type.
The connection to mathematics is also limited. For example, a signed 123_i32 vs an unsigned 123_u32 refer to the same mathematical number, but are pretty different things in Rust because they're values of entirely different types! Well.. at the abstract level at least they are different; in bits in registers they do end up looking the same again. Talking about bit representations though, signed numbers are actually represented in a way that clearly makes zero more similar to all the other positive numbers and more different from the other negative numbers.
Also, while I can appreciate the (mathematically accurate) nit personally, I'm aware of many many inaccuracies in wording in the Rust book, so I'm not super hopeful that there are going to be changes to fix this particular case because it might mostly just complicate things to try being more accurate here.
Anyway, there's many over-simplifications to be found in the book "The Rust Programming Language" about other things, too. (For instance around the rules of borrowing.)
If keep on diving deeper into how Rust works and you ever come to look back later their descriptions in the book in the future, you'll probably be able to notice them too.