Compare commits
4 Commits
e11868e6da
...
b29d2cbecc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b29d2cbecc | ||
|
|
cf0e32bb64 | ||
|
|
41f6c241b1 | ||
|
|
35d1537bcb |
4
4.2/2.md
4
4.2/2.md
@ -245,7 +245,9 @@ fn get_entities_at<T, const N: usize>(entities: &mut [T], indices: [usize; N]) -
|
|||||||
```rust
|
```rust
|
||||||
**Kod**
|
**Kod**
|
||||||
```
|
```
|
||||||
Но, оно нужно не только
|
Но, оно нужно не только для этого. При написании такого комментария программист лишний раз подумает, какие инварианты нужно соблюсти. А ещё, упрощает нахождение бага, так как можно сравнить условия, когда возникает баг, с теми условиями, что прописаны в комментариями. И баг по безопасности будет возникать возникать только в unsafe блоках. Правда, при всплытии в одном месте, причиной возникновения может стать unsafe блок в совершенно другом месте. Поэтому, хотелось бы сузить количество кода для поиска бага, поэтому старайтесь уменьшать блоки unsafe.
|
||||||
|
### Хорош тот unsafe, которого нет
|
||||||
|
Самую главную рекомендацию
|
||||||
|
|
||||||
**Начать с проблемы, когда компилятор не может гарантировать безопасность по памяти (но без этого невозможно написать программу), возможно из ub**
|
**Начать с проблемы, когда компилятор не может гарантировать безопасность по памяти (но без этого невозможно написать программу), возможно из ub**
|
||||||
Допустим, на вход вашей функции
|
Допустим, на вход вашей функции
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user