Skip to content

Conversation

@madsmtm
Copy link
Owner

@madsmtm madsmtm commented Sep 2, 2021

I wasn't sure previously whether I wanted to do this in #1, but after seeing that I really want to add Encode stuff in it, it seemed like a good idea. This PR also adds those bounds and implementations, which fixes the objc_foundation/block feature!

(There had already been work on this in a dev_encode branch)

This also includes the fix for SSheldon/rust-block#8.

Instead of supplying an extern fn, a simpler native rust fn is supplied
and the BlockArguments trait is used to get an extern fn that wraps it.
Previous code was just assigning to an uninitialzed field, so the
compiler was dropping it; by changing this to a ptr::write the existing
value is no longer dropped.
The old behavior can be replicated by creating a custom closure with a
context and function.
SSheldon and others added 22 commits April 3, 2016 22:20
Platforms beside OSX and iOS will link to libBlocksRuntime.
When updating to current Rust, there is a warning for a change
in the output due to the change in Markdown implementations.
The `gcc` crate has been replaced with `cc`. Additionally, the
`gcc:Config` was renamed to `gcc::Build`. This updates both of
those.

Commit taken from SSheldon/rust-block#8
This also adds A: EncodeArguments and R: Encode bounds on blocks, which is a good idea to require given that the types are being sent to and from Objective-C!
It's also actually nicer to have examples that use the current crate!
@madsmtm madsmtm added bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request labels Sep 2, 2021
@madsmtm madsmtm merged commit 9480a6f into master Sep 2, 2021
@madsmtm madsmtm deleted the objc_block branch September 2, 2021 14:57
@madsmtm madsmtm mentioned this pull request Sep 5, 2021
80 tasks
@madsmtm madsmtm mentioned this pull request Sep 3, 2023
11 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants