Skip to content

Instantly share code, notes, and snippets.

View mfpiccolo's full-sized avatar

Mike Piccolo mfpiccolo

View GitHub Profile
#![feature(libc)]
#![feature(cstr_to_str)]
#![feature(cstr_memory)]
extern crate hyper;
extern crate libc;
use hyper::Client;
use hyper::header::Connection;
use std::io::Read;
require 'ffi'
module Scrape
extend FFI::Library
ffi_lib './target/debug/libscrape.dylib'
attach_function :get_body, [:string], :string
end
body = Scrape.get_body("http://doc.rust-lang.org")[191..230]
#![feature(slice_chars)]
extern crate hyper;
use hyper::Client;
use hyper::header::Connection;
use std::io::Read;
fn get_body(url: &str) -> String {
let client = Client::new();
fn get_body(url: &str) -> String {
let client = Client::new();
let temp_resp = client.get(url).header(Connection::close()).send();
let mut resp = temp_resp.unwrap();
}
#[test]
fn it_works() {
assert_eq!(
fn get_body(url: String) -> String {
}
#[test]
fn it_works() {
assert_eq!(
get_body(&"http://www.rust-lang.org".to_string()).slice_chars(73, 105),
"<title>The Rust Programming Lang"
);
[package]
name = "scrape"
version = "0.1.0"
authors = ["Mike Piccolo <mfpiccolo@gmail.com>"]
[lib]
name = "scrape"
crate-type = ["dylib"]
[dependencies.hyper]
@mfpiccolo
mfpiccolo / a-rubyist-rusting-part-2-12.rs
Created July 6, 2015 02:12
Complete string manipulation ruby to rust and back
#![feature(libc)]
#![feature(cstr_to_str)]
#![feature(cstr_memory)]
extern crate libc;
use std::ffi::{CStr, CString};
#[no_mangle]
pub extern fn ruby_reverse(s: *const libc::c_char) -> *const libc::c_char {
let str = ruby_string_to_ref_str(s);
let string: String = str.chars().rev().collect();
@mfpiccolo
mfpiccolo / a-rubyist-rusting-part-2-11.rs
Created July 6, 2015 02:07
Converting Rust Ruby methods
fn ruby_string_to_ref_str<'a>(r_string: *const libc::c_char) -> &'a str {
unsafe { CStr::from_ptr(r_string) }.to_str().unwrap()
}
fn string_to_ruby_string(string: String) -> *const libc::c_char {
CString::new(string).unwrap().into_ptr()
}
@mfpiccolo
mfpiccolo / a-rubyist-rusting-part-2-9.rs
Last active August 29, 2015 14:24
Final ruby reverse string
#![feature(libc)]
#![feature(cstr_to_str)]
#![feature(cstr_memory)]
extern crate libc;
use std::ffi::{CStr, CString};
#[no_mangle]
pub extern fn ruby_reverse(s: *const libc::c_char) -> *const libc::c_char {
let rust_cstr = unsafe { CStr::from_ptr(s) }; // &std::ffi::c_str::CStr
let str = rust_cstr.to_str().unwrap(); // &str
let string: String = str.chars().rev().collect(); // collections::string::String
@mfpiccolo
mfpiccolo / a-rubyist-rusting-part-2-8.rs
Last active August 29, 2015 14:24
External reverse function convert string
extern crate libc;
use std::ffi::CStr;
pub extern fn ruby_reverse(s: *const libc::c_char) -> *const libc::c_char {
let rust_cstr = unsafe { CStr::from_ptr(s) }; // &std::ffi::c_str::CStr
let str = rust_cstr.to_str().unwrap(); // &str
let string: String = str.chars().rev().collect(); // collections::string::String
// convert and return for ffi ruby module
}