Floris Bruynooghe db9bc15d3e Make the callback optional again
The C API allows passing a NULL pointer is for the callback function.
However when calling the callback nothing checks for this null pointer
and thus things fail badly.  Even worse since the C API is defined
using an "fn pointer" rather than a "*-ptr" or raw pointer to the
function rust does not realise this can be invalid and therefore the
typechecker does not catch this even though there are no unsafe casts.

Fix this by making the callback an Option in rust, this can be easily
checked when calling.  Also add a Context.call_cb() function which
simplifies calling the callback, hides the weird syntax due to the
function pointer and makes the call a little easier.  Finally it also
means the option checking is only needed in one place.

For the C API this needs to check if this is a NULL pointer or not,
this is implicitly done by rust using the "nullable pointer
optimisation":
https://doc.rust-lang.org/nomicon/ffi.html#the-nullable-pointer-optimization
2019-06-17 20:06:15 +02:00
2019-05-28 17:41:50 +02:00
2019-06-17 20:06:15 +02:00
2019-06-12 22:44:56 +02:00
2019-06-17 20:06:15 +02:00
2019-06-17 20:06:15 +02:00
2019-04-27 21:26:53 +02:00
2019-05-07 14:00:33 +01:00
2019-06-08 17:13:25 +02:00
2019-06-08 17:13:25 +02:00
2019-06-08 17:13:25 +02:00

Delta Chat Rust

Project porting deltachat-core to rust

CircleCI build status Appveyor build status

Current commit on deltachat/deltachat-core: 12ef73c8e76185f9b78e844ea673025f56a959ab.

Installing Rust and Cargo

To download and install the official compiler for the Rust programming language, and the Cargo package manager, run the command in your user environment:

curl https://sh.rustup.rs -sSf | sh

Using the CLI client

Compile and run Delta Chat Core using cargo:

cargo run --example repl -- /path/to/db

Configure your account (if not already configured):

Delta Chat Core is awaiting your commands.
> set addr your@email.org
> set mail_pw yourpassword
> configure

Connect to your mail server (if already configured):

> connect

Create a contact:

> addcontact yourfriends@email.org
Command executed successfully.

List contacts:

> listcontacts
Contact#10: <name unset> <yourfriends@email.org>
Contact#1: Me √√ <your@email.org>

Create a chat with your friend and send a message:

> createchat 10
Single#10 created successfully.
> chat 10
Single#10: yourfriends@email.org [yourfriends@email.org]
> send hi
Message sent.

List messages when inside a chat:

> chat

For more commands type:

> help

Development

# run tests
$ cargo test --all
# build c-ffi
$ cargo build -p deltachat_ffi --release
Description
Chatmail Rust Core library, used by Android/iOS/desktop chatmail apps, bindings and bots 📧
Readme MPL-2.0 102 MiB
Languages
Rust 74.3%
Tcl 9.1%
Python 8.9%
C 4.9%
DIGITAL Command Language 1.1%
Other 1.6%