perf(core) Reduce copying and cloning in extension initialization (#18252)

Follow-up to #18210:

* we are passing the generated `cfg` object into the state function
rather than passing individual config fields
 * reduce cloning dramatically by making the state_fn `FnOnce`
 * `take` for `ExtensionBuilder` to avoid more unnecessary copies
 * renamed `config` to `options`
This commit is contained in:
Matt Mastracci 2023-03-17 16:15:27 -06:00 committed by GitHub
parent e55b448730
commit 3487fde236
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 206 additions and 174 deletions

View file

@ -107,19 +107,19 @@ deno_core::extension!(deno_fetch,
"23_response.js",
"26_fetch.js"
],
config = {
options = {
options: Options,
},
state = |state, options| {
state.put::<Options>(options.clone());
state.put::<Options>(options.options.clone());
state.put::<reqwest::Client>({
create_http_client(
options.user_agent,
options.root_cert_store,
options.options.user_agent,
options.options.root_cert_store,
vec![],
options.proxy,
options.unsafely_ignore_certificate_errors,
options.client_cert_chain_and_key
options.options.proxy,
options.options.unsafely_ignore_certificate_errors,
options.options.client_cert_chain_and_key
)
.unwrap()
});