mpvrc/rustix/fs/trait.OpenOptionsExt.html

35 lines
No EOL
8.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Re-export types common to POSIX-ish platforms. Unix-specific extensions to `fs::OpenOptions`."><title>OpenOptionsExt in rustix::fs - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-42caa33d.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="rustix" data-themes="" data-resource-suffix="" data-rustdoc-version="1.84.1 (e71f9a9a9 2025-01-27)" data-channel="1.84.1" data-search-js="search-92e6798f.js" data-settings-js="settings-0f613d39.js" ><script src="../../static.files/storage-59e33391.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-5f194d8c.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-893ab5e7.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-6580c154.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../rustix/index.html">rustix</a><span class="version">0.38.42</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Open<wbr>Options<wbr>Ext</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.custom_flags" title="custom_flags">custom_flags</a></li><li><a href="#tymethod.mode" title="mode">mode</a></li></ul><h3><a href="#dyn-compatibility">Dyn Compatibility</a></h3><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In rustix::<wbr>fs</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="../index.html">rustix</a>::<wbr><a href="index.html">fs</a></span><h1>Trait <span class="trait">OpenOptionsExt</span><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><span class="since" title="Stable since Rust version 1.1.0">1.1.0</span> · <a class="src" href="https://doc.rust-lang.org/1.84.1/src/std/os/unix/fs.rs.html#358">Source</a> </span></div><pre class="rust item-decl"><code>pub trait OpenOptionsExt {
// Required methods
fn <a href="#tymethod.mode" class="fn">mode</a>(&amp;mut self, mode: <a class="primitive" href="https://doc.rust-lang.org/1.84.1/std/primitive.u32.html">u32</a>) -&gt; &amp;mut Self;
<span class="item-spacer"></span> fn <a href="#tymethod.custom_flags" class="fn">custom_flags</a>(&amp;mut self, flags: <a class="primitive" href="https://doc.rust-lang.org/1.84.1/std/primitive.i32.html">i32</a>) -&gt; &amp;mut Self;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Re-export types common to POSIX-ish platforms.
Unix-specific extensions to <a href="https://doc.rust-lang.org/1.84.1/std/fs/struct.OpenOptions.html" title="struct std::fs::OpenOptions"><code>fs::OpenOptions</code></a>.</p>
</div></details><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.mode" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.1.0">1.1.0</span> · <a class="src" href="https://doc.rust-lang.org/1.84.1/src/std/os/unix/fs.rs.html#380">Source</a></span><h4 class="code-header">fn <a href="#tymethod.mode" class="fn">mode</a>(&amp;mut self, mode: <a class="primitive" href="https://doc.rust-lang.org/1.84.1/std/primitive.u32.html">u32</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Sets the mode bits that a new file will be created with.</p>
<p>If a new file is created as part of an <code>OpenOptions::open</code> call then this
specified <code>mode</code> will be used as the permission bits for the new file.
If no <code>mode</code> is set, the default of <code>0o666</code> will be used.
The operating system masks out bits with the systems <code>umask</code>, to produce
the final permissions.</p>
<h5 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::fs::OpenOptions;
<span class="kw">use </span>std::os::unix::fs::OpenOptionsExt;
<span class="kw">let </span><span class="kw-2">mut </span>options = OpenOptions::new();
options.mode(<span class="number">0o644</span>); <span class="comment">// Give read/write for owner and read for others.
</span><span class="kw">let </span>file = options.open(<span class="string">"foo.txt"</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.custom_flags" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.10.0">1.10.0</span> · <a class="src" href="https://doc.rust-lang.org/1.84.1/src/std/os/unix/fs.rs.html#407">Source</a></span><h4 class="code-header">fn <a href="#tymethod.custom_flags" class="fn">custom_flags</a>(&amp;mut self, flags: <a class="primitive" href="https://doc.rust-lang.org/1.84.1/std/primitive.i32.html">i32</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Pass custom flags to the <code>flags</code> argument of <code>open</code>.</p>
<p>The bits that define the access mode are masked out with <code>O_ACCMODE</code>, to
ensure they do not interfere with the access mode set by Rusts options.</p>
<p>Custom flags can only set flags, not remove flags set by Rusts options.
This options overwrites any previously set custom flags.</p>
<h5 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::fs::OpenOptions;
<span class="kw">use </span>std::os::unix::fs::OpenOptionsExt;
<span class="kw">let </span><span class="kw-2">mut </span>options = OpenOptions::new();
options.write(<span class="bool-val">true</span>);
<span class="kw">if </span><span class="macro">cfg!</span>(unix) {
options.custom_flags(libc::O_NOFOLLOW);
}
<span class="kw">let </span>file = options.open(<span class="string">"foo.txt"</span>);</code></pre></div>
</div></details></div><h2 id="dyn-compatibility" class="section-header">Dyn Compatibility<a href="#dyn-compatibility" class="anchor">§</a></h2><div class="dyn-compatibility-info"><p>This trait is <b>not</b> <a href="https://doc.rust-lang.org/1.84.1/reference/items/traits.html#object-safety">dyn compatible</a>.</p><p><i>In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.</i></p></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-OpenOptionsExt-for-OpenOptions" class="impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.1.0">1.1.0</span> · <a class="src" href="https://doc.rust-lang.org/1.84.1/src/std/os/unix/fs.rs.html#411">Source</a></span><a href="#impl-OpenOptionsExt-for-OpenOptions" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.OpenOptionsExt.html" title="trait rustix::fs::OpenOptionsExt">OpenOptionsExt</a> for <a class="struct" href="https://doc.rust-lang.org/1.84.1/std/fs/struct.OpenOptions.html" title="struct std::fs::OpenOptions">OpenOptions</a></h3></section></div><script src="../../trait.impl/std/os/unix/fs/trait.OpenOptionsExt.js" data-ignore-extern-crates="std" async></script></section></div></main></body></html>