{"guid":"a29e2610-de67-4c7a-a6a8-ad552db8aa25","title":"One Thousand Ways to Die in Rust FFI","subtitle":null,"slug":"rustfest-rome-9-one-thousand-ways-to-die-in-rust-ffi","link":"https://c3voc.de","description":"Efficient FFI bindings are one of the core features of Rust; however dereferencing raw pointers, conversion between Rust and C types, memory allocation, ..., all could possibly go wrong in FFI code and undermine the memory safety guarantee of Rust. The Rustonomicon and a few previous talks at RustFest discuss the topic of Rust FFI; but overlook the challenges in writing correct and safe FFI code. In this talk, we discuss a taxonomy of common pitfalls in Rust FFI with real-world examples. Moreover, we will review relevant principles and share our approach to effectively avoid the pitfalls.\n","original_language":"eng","persons":["Yiming Jing"],"tags":["rustfest-rome","9"],"view_count":326,"promoted":false,"date":"2018-11-24T00:00:00.000+01:00","release_date":"2018-11-24T01:00:00.000+01:00","updated_at":"2026-01-28T16:15:10.970+01:00","length":1838,"duration":1838,"thumb_url":"https://static.media.ccc.de/media/conferences/rustfest/2018-2/9-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/rustfest/2018-2/9-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/rustfest/2018-2/a29e2610-de67-4c7a-a6a8-ad552db8aa25-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/rustfest/2018-2/a29e2610-de67-4c7a-a6a8-ad552db8aa25-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/rustfest-rome-9-one-thousand-ways-to-die-in-rust-ffi","url":"https://api.media.ccc.de/public/events/a29e2610-de67-4c7a-a6a8-ad552db8aa25","conference_title":"Rustfest 2018 Rome","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18rome","related":[{"event_id":4606,"event_guid":"5400c892-12e3-4199-b976-a68b0b54c159","weight":1},{"event_id":4780,"event_guid":"af65b0d3-5e43-49e3-9ec0-c225f6c57d46","weight":1},{"event_id":4831,"event_guid":"f068c5df-f969-4206-befb-540326e3d053","weight":1},{"event_id":4866,"event_guid":"117a52b4-f675-49dd-aafe-659c07b6bc9c","weight":1},{"event_id":5426,"event_guid":"5200da56-4ba5-4a0c-aa27-413299d3ad58","weight":1},{"event_id":5428,"event_guid":"3407223a-90ff-4c07-b72d-fedec73a4fd5","weight":1},{"event_id":6024,"event_guid":"04b15cf2-0797-464d-92c1-245bff59b4bc","weight":1},{"event_id":6025,"event_guid":"6d52b06c-1295-4983-84e1-d0fb807af357","weight":1},{"event_id":6027,"event_guid":"566feb76-ea6c-4448-a161-fae24b66344c","weight":1},{"event_id":6205,"event_guid":"e1958a5d-9de1-5cc3-b30c-c6f45d9fedc0","weight":1},{"event_id":6206,"event_guid":"ebb47169-0fba-50de-a128-52158c76f613","weight":1},{"event_id":6218,"event_guid":"2a465579-1ef2-51e5-8807-6ef1d8f7d69d","weight":1},{"event_id":6229,"event_guid":"255cb75a-a2bb-5495-88f9-94be005953f1","weight":1},{"event_id":6230,"event_guid":"1642ffb9-de52-5206-8327-23c27efb82bc","weight":1},{"event_id":6249,"event_guid":"456fb60c-5ce7-11e8-be47-1fb2912eb894","weight":1},{"event_id":6329,"event_guid":"5d78d7e6-ebea-4c22-9fc8-b72ca25d4151","weight":1},{"event_id":6338,"event_guid":"34449bcc-efc3-5c53-8723-887ae2c632a8","weight":1},{"event_id":6339,"event_guid":"e323a8be-0bc6-553f-b54b-2ffc0b226c12","weight":1},{"event_id":6354,"event_guid":"963d743f-195b-4462-9047-7bb6b5e68fc8","weight":22},{"event_id":6355,"event_guid":"3b2b2a8d-2ac3-4977-820e-34e65a349b7a","weight":1},{"event_id":6356,"event_guid":"f8962974-0a5b-4529-b08c-7622588450e7","weight":40},{"event_id":6357,"event_guid":"d834bcae-84cd-467f-b4b0-6e337d8edad8","weight":5},{"event_id":6358,"event_guid":"bc8c2220-646b-4f45-86d9-5b2dd07f920f","weight":24},{"event_id":6360,"event_guid":"d640c62b-d4c1-4d31-bc97-63e5747f1424","weight":31},{"event_id":6362,"event_guid":"d86c7136-8c6b-416b-b2fe-94480b2e2ba0","weight":25},{"event_id":6363,"event_guid":"ea4b4671-01cb-46b2-bb27-bb11705b1284","weight":1},{"event_id":6365,"event_guid":"249fbe57-2fe1-4a79-98f3-e4ff160dfb2b","weight":63}],"recordings":[{"size":127,"length":1838,"mime_type":"video/mp4","language":"eng","filename":"rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2018-11-24T17:09:46.745+01:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018-2/h264-hd/rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_hd.mp4","url":"https://api.media.ccc.de/public/recordings/30693","event_url":"https://api.media.ccc.de/public/events/a29e2610-de67-4c7a-a6a8-ad552db8aa25","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18rome"},{"size":61,"length":1838,"mime_type":"video/mp4","language":"eng","filename":"rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2018-11-24T17:21:36.447+01:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018-2/h264-sd/rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_sd.mp4","url":"https://api.media.ccc.de/public/recordings/30694","event_url":"https://api.media.ccc.de/public/events/a29e2610-de67-4c7a-a6a8-ad552db8aa25","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18rome"},{"size":27,"length":1833,"mime_type":"audio/mpeg","language":"eng","filename":"rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2018-11-24T17:22:00.378+01:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018-2/mp3/rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/30695","event_url":"https://api.media.ccc.de/public/events/a29e2610-de67-4c7a-a6a8-ad552db8aa25","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18rome"},{"size":23,"length":1833,"mime_type":"audio/opus","language":"eng","filename":"rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2018-11-24T17:22:15.431+01:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018-2/opus/rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_opus.opus","url":"https://api.media.ccc.de/public/recordings/30696","event_url":"https://api.media.ccc.de/public/events/a29e2610-de67-4c7a-a6a8-ad552db8aa25","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18rome"},{"size":67,"length":1838,"mime_type":"video/webm","language":"eng","filename":"rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2018-11-24T17:22:36.739+01:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018-2/webm-sd/rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/30697","event_url":"https://api.media.ccc.de/public/events/a29e2610-de67-4c7a-a6a8-ad552db8aa25","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18rome"},{"size":175,"length":1838,"mime_type":"video/webm","language":"eng","filename":"rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2018-11-24T17:33:06.896+01:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018-2/webm-hd/rustfest-rome-9-eng-One_Thousand_Ways_to_Die_in_Rust_FFI_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/30703","event_url":"https://api.media.ccc.de/public/events/a29e2610-de67-4c7a-a6a8-ad552db8aa25","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18rome"}]}