auto merge of #19152 : alexcrichton/rust/issue-17863, r=aturon
This commit is an implementation of [RFC 240][rfc] when applied to the standard library. It primarily deprecates the entirety of `string::raw`, `vec::raw`, `slice::raw`, and `str::raw` in favor of associated functions, methods, and other free functions. The detailed renaming is: * slice::raw::buf_as_slice => slice::from_raw_buf * slice::raw::mut_buf_as_slice => slice::from_raw_mut_buf * slice::shift_ptr => deprecated with no replacement * slice::pop_ptr => deprecated with no replacement * str::raw::from_utf8 => str::from_utf8_unchecked * str::raw::c_str_to_static_slice => str::from_c_str * str::raw::slice_bytes => deprecated for slice_unchecked (slight semantic diff) * str::raw::slice_unchecked => str.slice_unchecked * string::raw::from_parts => String::from_raw_parts * string::raw::from_buf_len => String::from_raw_buf_len * string::raw::from_buf => String::from_raw_buf * string::raw::from_utf8 => String::from_utf8_unchecked * vec::raw::from_buf => Vec::from_raw_buf All previous functions exist in their `#[deprecated]` form, and the deprecation messages indicate how to migrate to the newer variants. [rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0240-unsafe-api-location.md [breaking-change] Closes #17863
This commit is contained in:
commit
641e2a110d
15 changed files with 304 additions and 208 deletions
|
|
@ -32,7 +32,6 @@ use std::cell::{RefCell, Cell};
|
|||
use std::fmt;
|
||||
use std::slice;
|
||||
use std::str;
|
||||
use std::string;
|
||||
use std::collections::HashMap;
|
||||
|
||||
use html::toc::TocBuilder;
|
||||
|
|
@ -160,54 +159,52 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
|
|||
|
||||
let opaque = opaque as *mut hoedown_html_renderer_state;
|
||||
let my_opaque: &MyOpaque = &*((*opaque).opaque as *const MyOpaque);
|
||||
slice::raw::buf_as_slice((*orig_text).data, (*orig_text).size as uint,
|
||||
|text| {
|
||||
let origtext = str::from_utf8(text).unwrap();
|
||||
debug!("docblock: ==============\n{}\n=======", text);
|
||||
let rendered = if lang.is_null() {
|
||||
false
|
||||
let text = slice::from_raw_buf(&(*orig_text).data,
|
||||
(*orig_text).size as uint);
|
||||
let origtext = str::from_utf8(text).unwrap();
|
||||
debug!("docblock: ==============\n{}\n=======", text);
|
||||
let rendered = if lang.is_null() {
|
||||
false
|
||||
} else {
|
||||
let rlang = slice::from_raw_buf(&(*lang).data,
|
||||
(*lang).size as uint);
|
||||
let rlang = str::from_utf8(rlang).unwrap();
|
||||
if LangString::parse(rlang).notrust {
|
||||
(my_opaque.dfltblk)(ob, orig_text, lang,
|
||||
opaque as *mut libc::c_void);
|
||||
true
|
||||
} else {
|
||||
slice::raw::buf_as_slice((*lang).data,
|
||||
(*lang).size as uint, |rlang| {
|
||||
let rlang = str::from_utf8(rlang).unwrap();
|
||||
if LangString::parse(rlang).notrust {
|
||||
(my_opaque.dfltblk)(ob, orig_text, lang,
|
||||
opaque as *mut libc::c_void);
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
let mut lines = origtext.lines().filter(|l| {
|
||||
stripped_filtered_line(*l).is_none()
|
||||
});
|
||||
let text = lines.collect::<Vec<&str>>().connect("\n");
|
||||
if !rendered {
|
||||
let mut s = String::new();
|
||||
let id = playground_krate.get().map(|krate| {
|
||||
let idx = test_idx.get().unwrap();
|
||||
let i = idx.get();
|
||||
idx.set(i + 1);
|
||||
|
||||
let test = origtext.lines().map(|l| {
|
||||
stripped_filtered_line(l).unwrap_or(l)
|
||||
}).collect::<Vec<&str>>().connect("\n");
|
||||
let krate = krate.as_ref().map(|s| s.as_slice());
|
||||
let test = test::maketest(test.as_slice(), krate, false, false);
|
||||
s.push_str(format!("<span id='rust-example-raw-{}' \
|
||||
class='rusttest'>{}</span>",
|
||||
i, Escape(test.as_slice())).as_slice());
|
||||
format!("rust-example-rendered-{}", i)
|
||||
});
|
||||
let id = id.as_ref().map(|a| a.as_slice());
|
||||
s.push_str(highlight::highlight(text.as_slice(), None, id)
|
||||
.as_slice());
|
||||
let output = s.to_c_str();
|
||||
hoedown_buffer_puts(ob, output.as_ptr());
|
||||
false
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
let mut lines = origtext.lines().filter(|l| {
|
||||
stripped_filtered_line(*l).is_none()
|
||||
});
|
||||
let text = lines.collect::<Vec<&str>>().connect("\n");
|
||||
if !rendered {
|
||||
let mut s = String::new();
|
||||
let id = playground_krate.get().map(|krate| {
|
||||
let idx = test_idx.get().unwrap();
|
||||
let i = idx.get();
|
||||
idx.set(i + 1);
|
||||
|
||||
let test = origtext.lines().map(|l| {
|
||||
stripped_filtered_line(l).unwrap_or(l)
|
||||
}).collect::<Vec<&str>>().connect("\n");
|
||||
let krate = krate.as_ref().map(|s| s.as_slice());
|
||||
let test = test::maketest(test.as_slice(), krate, false, false);
|
||||
s.push_str(format!("<span id='rust-example-raw-{}' \
|
||||
class='rusttest'>{}</span>",
|
||||
i, Escape(test.as_slice())).as_slice());
|
||||
format!("rust-example-rendered-{}", i)
|
||||
});
|
||||
let id = id.as_ref().map(|a| a.as_slice());
|
||||
s.push_str(highlight::highlight(text.as_slice(), None, id)
|
||||
.as_slice());
|
||||
let output = s.to_c_str();
|
||||
hoedown_buffer_puts(ob, output.as_ptr());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -221,7 +218,7 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
|
|||
"".to_string()
|
||||
} else {
|
||||
unsafe {
|
||||
string::raw::from_buf_len((*text).data, (*text).size as uint)
|
||||
String::from_raw_buf_len((*text).data, (*text).size as uint)
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -296,9 +293,8 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
|
|||
};
|
||||
|
||||
if ret.is_ok() {
|
||||
ret = slice::raw::buf_as_slice((*ob).data, (*ob).size as uint, |buf| {
|
||||
w.write(buf)
|
||||
});
|
||||
let buf = slice::from_raw_buf(&(*ob).data, (*ob).size as uint);
|
||||
ret = w.write(buf);
|
||||
}
|
||||
hoedown_buffer_free(ob);
|
||||
ret
|
||||
|
|
@ -315,25 +311,23 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
|
|||
let block_info = if lang.is_null() {
|
||||
LangString::all_false()
|
||||
} else {
|
||||
slice::raw::buf_as_slice((*lang).data,
|
||||
(*lang).size as uint, |lang| {
|
||||
let s = str::from_utf8(lang).unwrap();
|
||||
LangString::parse(s)
|
||||
})
|
||||
let lang = slice::from_raw_buf(&(*lang).data,
|
||||
(*lang).size as uint);
|
||||
let s = str::from_utf8(lang).unwrap();
|
||||
LangString::parse(s)
|
||||
};
|
||||
if block_info.notrust { return }
|
||||
slice::raw::buf_as_slice((*text).data, (*text).size as uint, |text| {
|
||||
let opaque = opaque as *mut hoedown_html_renderer_state;
|
||||
let tests = &mut *((*opaque).opaque as *mut ::test::Collector);
|
||||
let text = str::from_utf8(text).unwrap();
|
||||
let mut lines = text.lines().map(|l| {
|
||||
stripped_filtered_line(l).unwrap_or(l)
|
||||
});
|
||||
let text = lines.collect::<Vec<&str>>().connect("\n");
|
||||
tests.add_test(text.to_string(),
|
||||
block_info.should_fail, block_info.no_run,
|
||||
block_info.ignore, block_info.test_harness);
|
||||
})
|
||||
let text = slice::from_raw_buf(&(*text).data, (*text).size as uint);
|
||||
let opaque = opaque as *mut hoedown_html_renderer_state;
|
||||
let tests = &mut *((*opaque).opaque as *mut ::test::Collector);
|
||||
let text = str::from_utf8(text).unwrap();
|
||||
let mut lines = text.lines().map(|l| {
|
||||
stripped_filtered_line(l).unwrap_or(l)
|
||||
});
|
||||
let text = lines.collect::<Vec<&str>>().connect("\n");
|
||||
tests.add_test(text.to_string(),
|
||||
block_info.should_fail, block_info.no_run,
|
||||
block_info.ignore, block_info.test_harness);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -346,10 +340,9 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
|
|||
if text.is_null() {
|
||||
tests.register_header("", level as u32);
|
||||
} else {
|
||||
slice::raw::buf_as_slice((*text).data, (*text).size as uint, |text| {
|
||||
let text = str::from_utf8(text).unwrap();
|
||||
tests.register_header(text, level as u32);
|
||||
})
|
||||
let text = slice::from_raw_buf(&(*text).data, (*text).size as uint);
|
||||
let text = str::from_utf8(text).unwrap();
|
||||
tests.register_header(text, level as u32);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue