Is there is any way to run Swift dylib from Rust without using unsafe? Or is there any way to call the Swift functions from Rust without Rust's unsafe? To date whatever I tried I had to use unsafe.
Swift dylib in Rust without using unsafe
91 Views Asked by User0987 At
2
There are 2 best solutions below
1
Caesar
On
@AleksanderKrauze is technically correct. Somewhere, there needs to be unsafe code for the FFI. But that doesn't mean that you need to write that unsafe code yourself.
You could for example use something that generates that unsafe code for you. If that something is well-made (i.e. sound), all the code you write will be safe rust, and you won't need to worry about accidental undefined behavior.
swift-bridge might be one such something, but I can't vouch for its completeness or soundness.
Related Questions in SWIFT
- Navigate after logged in with webservice
- URLSession requesting JSON array from server not working
- When using onDrag in SwiftUI on Mac how can I detect when the dragged object has been released anywhere?
- Protect OpenAI key using Firebase function
- How to correct error: "Cannot convert value of type 'MyType.Type' to expected argument type 'Binding<MyType>'"?
- How to share metadata of an audio url file to a WhatsApp conversation with friends
- Using @Bindable with a Observable type in SwiftUI
- How to make a scroll view of 9 images in a forEach loop open on image 6 if image 6 is clicked on from a grid?
- Using MTLPixelFormat.rgba16Float results in random round-off errors
- Search and highlight text of current text in PDFKit Swift
- How is passing a function as a parameter related to escaping autoclosure?
- Actionable notification api call not working in background
- Custom layout occupies all horizontal space
- Is it possible to fix slow CKAsset loading on Cloudkit?
- Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value - MapView.isMyLocationEnabled
Related Questions in RUST
- `ColumnNotFound("id")` when inserting with SQLx
- Polars with Rust: Out of Memory Error when Processing Large Dataset in Docker Using Streaming
- Why is a slice a DST?
- Unable to Retrieve External Public Address in libp2p Swarm Events
- Dynamic Nested Multi-Dimensional Arrays in Rust
- Generic property compare
- "(Reason: CORS header ‘Access-Control-Allow-Origin’ missing)" while trying to access Actix webserver from Wix site
- Is a directory (os error 21) when using rust to move a file
- Different types even though same value assigned
- How to pass a byte array to a WASM module from wasmer in Rust?
- Mutable borrow problem with inserting Vacant entry into HashMap
- Expected behavior while printing reference and dereference of a variable
- How to allocate a large structure in a heap baked `Arc<T>` without stack overflow in Rust?
- In Rust, how to inspect values captured by a closure?
- How to encrypt a string at compile-time and decrypt it at runtime in Rust, similar to constexpr encryption in c++?
Related Questions in RUST-CARGO
- Can't add user info to current request instance after validate the jwt token in actix web middleware in rust
- How to correctly generate an HTML report of coverage with grcov
- Cargo complaining on unused super::* import on tests module
- Cargo patch to redirect registry to local path without having to call cargo login
- Unit Tests not Compiling or Being found without mod tests in main.rs. Is this a requirement or am I missing some configuration?
- implementin filter for vector of custom struct in RUST
- Cargo not found after installing in a devcontainer
- Android developer tools not found even after installing Android studio
- Troubles with linking Rust lib when compiling as shared lib for Android using NDK
- does profile-rustflags allow setting features based on profile?
- set cargo profile for workspace members but not dependencies?
- error: failed to select a version for `tree-sitter`. gpui.rs
- Linking error for SDL2 on linux while building with cargo
- How do I return rows from my query with odbc_api?
- How to make cargo automatically install the dependencies with version suits with a desired rustc?
Related Questions in DYLIB
- macOS in-app purchases via dylib - is it possible? alternatives? suggestions?
- Locating loaded dylibs
- Compiled libgmp has itself in its own prefix path as dependency
- .dylib not Found Trying to Open the Program After Being Generated by PAServer
- MacOS dlopen search path does not add .dylib extension using gcc/ld
- ffi-napi failing to load .dll - running on mac os
- I want to print hello before CoreFoundation.dylib loads in ios
- z3: sudo make install fails to set up dynamic libraries on MacOS Sonoma (M1 pro)
- How to link dylib with specific directory
- Swift dylib in Rust without using unsafe
- How does one consistently set rpath on a dynamic library and compile time?
- How to use Swift dylib in Python Project in macOS?
- MacOS Dynamic library issues using a Makefile written for Linux platforms
- Pyinstaller on macos doesn't load library with --add-binary
- Code signing issue with SPM Dynamic Library
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
No. It is impossible to call any external (FFI) functions from Rust without specifying them as
unsafe. You have to assert to the compiler that this code upholds all rust safety requirements. And since compiler cannot do that, you have to do it manually by usingunsafe(and of course it has to be safe to do it).To better understand why there is
unsafein the language read chapter on Unsafe Rust from the Rust Programming Language, and especially Using extern functions to call external code paragraph.