{"guid":"7c66d3ba-35e9-52ed-9cdd-6266ee1ca114","title":"A Rust Crate that also quacks like a modern C++ Library","subtitle":null,"slug":"rustfest18-5-a_rust_crate_that_also_quacks_like_a_modern_c_library","link":"https://c3voc.de","description":"In Firefox 56, the encoding_rs character encoding conversion crate replaced Firefox’s previous encoding conversion library that was written in C++. This talk examines the API design characteristics that allowed the Rust API of encoding_rs to be mapped to an idiomatic C API and how it was possible to re-create an almost exact modern C++ analog of the Rust API on top of the C API. Rather than trying to cover the mapping of an arbitrary Rust API to C++, this talk focuses on patterns that are easy to map to C++ to help others to aim for such patterns when bringing Rust to C++ code bases.","original_language":"eng","persons":["Henri Sivonen"],"tags":["rustfest18","5"],"view_count":439,"promoted":false,"date":"2018-05-26T00:00:00.000+02:00","release_date":"2018-05-26T02:00:00.000+02:00","updated_at":"2026-03-27T09:00:06.129+01:00","length":1848,"duration":1848,"thumb_url":"https://static.media.ccc.de/media/conferences/rustfest/2018/5-hd.jpg","poster_url":"https://static.media.ccc.de/media/conferences/rustfest/2018/5-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/conferences/rustfest/2018/7c66d3ba-35e9-52ed-9cdd-6266ee1ca114-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/conferences/rustfest/2018/7c66d3ba-35e9-52ed-9cdd-6266ee1ca114-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/rustfest18-5-a_rust_crate_that_also_quacks_like_a_modern_c_library","url":"https://api.media.ccc.de/public/events/7c66d3ba-35e9-52ed-9cdd-6266ee1ca114","conference_title":"Rustfest 2018 Paris","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18","related":[{"event_id":5545,"event_guid":"33a78b77-a1fa-5bf8-a719-15a8663593dd","weight":16},{"event_id":5546,"event_guid":"069a6809-2727-55c7-b584-03776939ee96","weight":24},{"event_id":5547,"event_guid":"69d9379b-5f4d-53c7-a03a-4db98f105781","weight":21},{"event_id":5548,"event_guid":"1adcd4eb-7655-5f62-9917-add6bf2b2eee","weight":18},{"event_id":5550,"event_guid":"285f1241-3400-50d1-9d5d-dbaeb272dabe","weight":17},{"event_id":5551,"event_guid":"1cde6c4f-3c96-5b27-ba65-a02fbe4138a3","weight":18},{"event_id":5554,"event_guid":"41ebd647-9d5f-5779-9dba-3d3623b673bb","weight":11},{"event_id":5555,"event_guid":"6d6e883d-b0b9-5c23-9d05-14686411da58","weight":5},{"event_id":5557,"event_guid":"d6e55ac4-08b0-5c60-a88c-daa5496dfbf6","weight":17}],"recordings":[{"size":553,"length":1848,"mime_type":"video/mp4","language":"eng","filename":"rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2018-05-26T21:39:53.103+02:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018/h264-hd/rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_hd.mp4","url":"https://api.media.ccc.de/public/recordings/26006","event_url":"https://api.media.ccc.de/public/events/7c66d3ba-35e9-52ed-9cdd-6266ee1ca114","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18"},{"size":28,"length":1843,"mime_type":"audio/mpeg","language":"eng","filename":"rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2018-05-26T22:03:06.608+02:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018/mp3/rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/26030","event_url":"https://api.media.ccc.de/public/events/7c66d3ba-35e9-52ed-9cdd-6266ee1ca114","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18"},{"size":72,"length":1848,"mime_type":"video/webm","language":"eng","filename":"rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2018-05-26T22:04:07.747+02:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018/webm-sd/rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/26032","event_url":"https://api.media.ccc.de/public/events/7c66d3ba-35e9-52ed-9cdd-6266ee1ca114","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18"},{"size":20,"length":1843,"mime_type":"audio/opus","language":"eng","filename":"rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2018-05-26T22:04:37.768+02:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018/opus/rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_opus.opus","url":"https://api.media.ccc.de/public/recordings/26033","event_url":"https://api.media.ccc.de/public/events/7c66d3ba-35e9-52ed-9cdd-6266ee1ca114","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18"},{"size":82,"length":1848,"mime_type":"video/mp4","language":"eng","filename":"rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2018-05-26T22:05:11.742+02:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018/h264-sd/rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_sd.mp4","url":"https://api.media.ccc.de/public/recordings/26034","event_url":"https://api.media.ccc.de/public/events/7c66d3ba-35e9-52ed-9cdd-6266ee1ca114","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18"},{"size":223,"length":1848,"mime_type":"video/webm","language":"eng","filename":"rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2018-05-26T22:17:45.534+02:00","recording_url":"https://cdn.media.ccc.de/events/rustfest/2018/webm-hd/rustfest18-5-eng-A_Rust_Crate_that_also_quacks_like_a_modern_C_Library_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/26046","event_url":"https://api.media.ccc.de/public/events/7c66d3ba-35e9-52ed-9cdd-6266ee1ca114","conference_url":"https://api.media.ccc.de/public/conferences/rustfest18"}]}