mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-30 12:51:10 +00:00
26 lines
1.3 KiB
Markdown
26 lines
1.3 KiB
Markdown
# module `unsound`
|
|
|
|
[](https://gezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com/default/source_up_to_date?owner=erg-lang&repos=erg&ref=main&path=doc/EN/API/modules/unsound.md&commit_hash=06f8edc9e2c0cee34f6396fd7c64ec834ffb5352)
|
|
|
|
Provides APIs perform unsound and unsafe operations that cannot be guaranteed safe in Erg's type system.
|
|
|
|
## `unsafe!`
|
|
|
|
Executes a `Unsafe` procedure. Just like Rust, `Unsafe` APIs cannot be called directly, but are all passed as higher-order functions to this procedure.
|
|
|
|
```python
|
|
unsound = import "unsound"
|
|
|
|
i = unsound.unsafe! do!:
|
|
# convert `Result Int` to `Int`
|
|
unsound.transmute input!().try_into(Int), Int
|
|
```
|
|
|
|
## transmute
|
|
|
|
第1引数のオブジェクトを第2引数の型へ変換します。型チェックは行われません。
|
|
この関数は型システムの型安全性を損ないます。使用の際はバリデーション等を行ってください。
|
|
|
|
## auto_transmute
|
|
|
|
`transmute`とは違い、期待される型に自動で変換します。Ocamlの`Obj.magic`と同じ働きをします。
|