我想创建一个Rc
Rc有一个
?大小
绑定:
pub struct Rc<T: ?Sized> { /* fields omitted */ }
我还听说Rust 1.2将提供适当的支持,用于在
Rc
中存储未调整大小的类型,但我不确定这与1.1有何不同。
以
str
案例为例,我天真的尝试(也是从字符串构建的尝试)失败了:
use std::rc::Rc;
fn main() {
let a: &str = "test";
let b: Rc<str> = Rc::new(*a);
println!("{}", b);
}
error[E0277]: the trait bound `str: std::marker::Sized` is not satisfied
--> src/main.rs:5:22
|
5 | let b: Rc<str> = Rc::new(*a);
| ^^^^^^^ `str` does not have a constant size known at compile-time
|
= help: the trait `std::marker::Sized` is not implemented for `str`
= note: required by `<std::rc::Rc<T>>::new`
很明显,为了创建
Rc
我被告知不能实例化这样的类型,而是实例化
Rc
创建Rc
use std::rc::Rc;
fn main() {
let x: Rc<[i32; 4]> = Rc::new([1, 2, 3, 4]);
let y: Rc<[i32]> = x;
println!("{:?}", y);
}
然而,这对字符串不起作用,因为它们没有原始的固定大小的等价物来创建第一个值。这可能是不安全的,例如通过创建一个UTF-8编码的
Rc
另一种选择是
owning_ref
,它本身并不是std::rc::rc
,但应该允许,例如,获取RcRef
extern crate owning_ref;
use owning_ref::RcRef;
use std::rc::Rc;
fn main() {
let some_string = "foo".to_owned();
let val: RcRef<String> = RcRef::new(Rc::new(some_string));
let borrowed: RcRef<String, str> = val.map(|s| &**s);
let erased: RcRef<owning_ref::Erased, str> = borrowed.erase_owner();
}
擦除意味着
RcRef
注意。在撰写本文时,使用
RcRef
进行擦除需要夜间编译器,并且取决于owning\u ref
的nightly
功能:
[dependencies]
owning_ref = { version = "0.1", features = ["nightly"] }
从1.21开始。根据RFC 1845的规定,创建Rc
use std::rc::Rc;
use std::sync::Arc;
fn main() {
let a: &str = "hello world";
let b: Rc<str> = Rc::from(a);
println!("{}", b);
// or equivalently:
let b: Rc<str> = a.into();
println!("{}", b);
// we can also do this for Arc,
let a: &str = "hello world";
let b: Arc<str> = Arc::from(a);
println!("{}", b);
}
(游乐场)
参见
ReplicationController 1 - 创建工程 $ oc new-project test 2 - 创建 rc.yaml,内容如下 apiVersion: v1 kind: ReplicationController metadata: name: mysql spec: replicas: 1 selector: app: mysql template:
JavaScript 实现的任意大小,任意方向, 任意角度的箭头。 示例截图 简单箭头 模拟select 发散箭头 安装 npm install rc-arrow --save import Arrow from 'rc-arrow'class Hw extends Component { render() { return ( <Arrow size="
项目介绍: 基于`Leaflet`引擎的`React`地图组件,支持`TypeScript` 由数据驱动地图元素的添加与移除,完整的声明周期控制 支持特性: 支持TypeScript Popup,Tooltip,DivIcon组件支持JSX内容 支持海量点位组件 支持聚合点位组件 支持主题定制 支持按需加载 支持插件: rc-leaflet-drawing 后续规划: LayerGroup,Fea
rc-bullets 是一个基于 CSS3 Animation,使用 React 构建的可扩展、高性能弹幕组件。 特性 支持传入 React 组件,灵活控制弹幕内容和 UI,并提供一个默认样式组件:<StyledBullet/> 弹幕屏幕管理:清屏,暂停,隐藏(后续可能会加入针对单个弹幕的控制) 弹幕动画参数化:运动函数(匀速/ease/步进/cubic-bezier)、时长(秒)、循环次数、延迟
问题内容: 我正在尝试使用Selenium RC + Nunit + asp.net测试我的网站。 我可以让我的测试在Firefox,Safari,opera,IE 8中运行,但不能在谷歌浏览器中运行。我把它放在浏览器上 尽管这总是会加载Firefox,但不会加载优质的chrome。 问题答案: 如果我没记错的话, “”用于启动Firefox的特殊模式 (这种模式下,您的应用程序具有更多特权-更少
我正在构建一个Azure函数项目,所以我不能以.NET5为目标。相反,我的项目是一个 。然而,当我的项目被构建时,只要有一些信息被打印出来,我就会看到DotNet5被提到。示例: 警告/usr/share/dotnet/sdk/5.0.101/microsoft.common.currentversion.targets(2123,5):警告MSB3245:无法解析此引用。找不到程序集“Syste